看tp5源码的,补充下
error_reporting(E_ALL); set_error_handler([__CLASS__, 'appError']); set_exception_handler([__CLASS__, 'appException']); register_shutdown_function([__CLASS__, 'appShutdown']);
第一个是报告所有错误,就一个配置
第二:set_error_handler
function myErrorHandler($errno, $errstr, $errfile, $errline) { echo "<b>Custom error:</b> [$errno] $errstr<br>"; echo " Error on line $errline in $errfile<br>"; } // 设置用户定义的错误处理函数 set_error_handler("myErrorHandler"); $test=2; // 触发错误 if ($test>1) { trigger_error("A custobeen triggered"); }
第三:_exception_handler
function _exception_handler($e) { if ($e instanceof Error) { echo "catch Error: " . $e->getCode() . ' ' . $e->getMessage() . '<br>'; } else { echo "catch Exception: " . $e->getCode() . ' ' . $e->getMessage() . '<br>'; } } set_exception_handler('_exception_handler'); // 注册异常处理方法来捕获异常 throw new Exception('This is a exception', 400); //抛出一个Exception,看是否可以被catch*/
第四:php挂掉之前做下日志的功能
register_shutdown_function('shutdown_function');
try
{
$a = new A();//这里会报致命错误
echo 5/0;
}
catch(Exception $e)
{
echo '异常捕获';
print $e->getMessage();
}
function shutdown_function()
{
echo '捕获错误';
$e = error_get_last();
print_r($e);
}
这是php的错误处理函数的基本解释和触发方法。tp5改写了下,值得看看。