IT源码网

php的错误处理机制讲解

shasha 2021年02月16日 编程语言 196 0

看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改写了下,值得看看。

发布评论
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

php的自动加载函数spl_autoload_register和__autoload讲解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。