• PHP中的错误处理机制


    PHP里有一套错误处理机制,可以使用set_error_handler接管PHP错误处理,也可以使用trigger_error函数主动抛出一个错误。

    set_error_handler()函数设置用户自定义的错误处理函数。函数用于创建运行期间的用户自己的错误处理方法。它需要先创建一个错误处理函数,然后设置错误级别。语法如下:
    set_error_handler(error_function,error_types)
    参数描述如下:
    error_function:规定发生错误时运行的函数。必需。
    error_types:规定在哪个错误报告级别会显示用户定义的错误。可选。默认为“E_ALL”。
     
    提示 如果使用该函数,会完全绕过标准PHP错误处理函数,如果有必要,用户定义的错误处理程序必须终止(die())脚本。
    如果在脚本执行前发生错误,由于在那时自定义程序还没有注册,因此就不会用到这个自定义错误处理程序。这先实现一个自定义的异常处理函数
    function myError($errno,$errstr,$errfile,$errline)
    {
        echo "错误代码:[$errno] $errstr",'<br>';
        echo "错误执行的代码行:$errline",'<br>';
        echo "错误执行的文件:$errfile",'<br>';
        echo "PHP版本:",PHP_VERSION,"(" ,PHP_OS ,")",'<br>';
        die;
    }
    set_error_handler('myError',E_ALL|E_STRICT);
    $a = array('o'=>2,4,5,6);
    echo $a[o];
    
    在这个函数里,可以对错误的详情进行格式化输出,也可以做任何要做的事情,比如判断当前环境和权限给出不同的错误提示,可使用errer_log函数将错误记入log文件,还可以细化处理,针对$errno的不同进行对应的处理。
    自定义的错误处理函数一定要有这四个输入变量$errno、$errstr、$errfile、$errline。
    errno是一组常量,代表错误的等级,同时也有一组整数和其对应,但一般使用其字符串值表示,这样语义更好一点。比如E_WARNING,其二进制掩码为4.,表示警告信息。
    接下来,就是将这个函数作为回调参数传递给set_error_handler。这样就能接管PHP原生的错误处理函数了。要注意的是,这种托管方式并不能托管所有种类的错误,如E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING,以及E_STRICT中的部分。这些错误会以最原始的方式显示,或者不显示。
    set_error_handler函数会接管PHP内置的错误处理,你可以在同一个页面使用restore_error_handler();取消接管。
     
    (注意:如果使用自定义的set_error_handler接管PHP的错误处理,先前代码里的错误抑制@将失效,这种错误也会被显示)。
    在PHP异常中,异常处理机制是有限的,无法自动抛出异常,必须手动进行,并且内置异常有限。PHP把许多异常看做错误,这样就可以把这些“异常”像错误一样用set_error_handler接管,进而主动抛出异常
  • 相关阅读:
    sql_LIKE
    sql_TOP
    oracle_存储过程
    注释@
    request.getAttribute()和request.getParameter()区别
    遍历map
    ORACLE
    JSP
    生成导入模板_设置列宽及标题_解析xml
    解析Excel_Poi
  • 原文地址:https://www.cnblogs.com/chenqionghe/p/4749787.html
Copyright © 2020-2023  润新知