gpt4 book ai didi

php - PHP错误处理程序和ErrorException混淆: log stack trace

转载 作者:行者123 更新时间:2023-12-03 07:50:23 24 4
gpt4 key购买 nike

我想将所有PHP错误记录到数据库中,所有错误都带有堆栈跟踪。但是PHP Manual片段让我感到困惑:

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

我目前使用传递给set_error_handler()的函数将错误记录到数据库中。但是,如果我使用上面的代码, ,我会将写错误和堆栈跟踪的代码放在哪里?
function error_handler($errno, $errstr, $errfile, $errline){
$err = array(
'errno' => $errno,
'errstr' => $errstr,
'errfile' => $errfile,
'errline' => $errline
);
DB::insertAssoc('table_error', $err);
}

最佳答案

使用异常时,您需要使用try {/* code */} catch (Exception $error) {/* handle exception code*/}。尝试这个:

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}

function error_handler($errno, $errstr, $errfile, $errline){
$err = array(
'errno' => $errno,
'errstr' => $errstr,
'errfile' => $errfile,
'errline' => $errline
);

DB::insertAssoc('table_error', $err);
}

set_error_handler("exception_error_handler");

try {
$q/1;
} catch (ErrorException $e) {
error_handler(
$e->getSeverity(),
$e->getMessage(),
$e->getFile(),
$e->getLine()
);
}

您可以在此处阅读有关在PHP中处理异常的更多信息: http://www.php.net/manual/en/language.exceptions.php

关于php - PHP错误处理程序和ErrorException混淆: log stack trace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23151933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com