《PHP实战:PHP 错误处理机制》要点:
本文介绍了PHP实战:PHP 错误处理机制,希望对您有用。如果有疑问,可以联系我们。
PHP学习在日常的项目开发过程中,总是会出现一些我们意想不到的异常错误,如果我们对此没有进行相对完善的处理,那么程序看上去也很不专业,也很可能就会成为别人攻击系统的有效信息;有些错误异常会终止脚本执行,这个时候如果没有一些错误提示信息的话,那么我们只能从头开始看代码了,要知道项目中成百上千行的代码对我们来说是件多么恐怖的事情啊,那么我们如安在项目开发的过程中快速准确地定位到异常、错误呢,并进行相应的处理,本文由自己对错误、异常处理的了解,再此分享与大家相互学习交流,并作为一个备忘.
PHP学习系统错误处理器:
PHP学习PHP正常情况下,错误会正常的输出,但在一些框架中,可能会影响错误的输出,可能是框架自己有自己的处理机制,也可能代码中作处理了,一般是这几个函数设置:
PHP学习1.error_reporting(); 设置PHP 的报错级别并返回当前级别
PHP学习 error_reporting(report_level)
PHP学习如果参数 level 未指定,当前报错级别将被返回.下面几项是 level 可能的值:
PHP学习值 |
PHP学习常量 |
PHP学习描述 |
PHP学习1 |
PHP学习E_ERROR |
PHP学习致命的运行时错误.不能回收此错误.脚本被中断执行. |
PHP学习2 |
PHP学习E_WARNING |
PHP学习非致命的运行时警告.脚本不被中断执行. |
PHP学习4 |
PHP学习E_PARSE |
PHP学习编译时分析错误.解析应该只由分析器生成的错误 |
PHP学习8 |
PHP学习E_NOTICE |
PHP学习运行时通知.该脚本发现可能是一个错误,但通常运行一个脚本时,也可能发生 |
PHP学习16 |
PHP学习E_CORE_ERROR |
PHP学习致命错误在PHP启动时.这就比如在PHP核心的E_ERROR |
PHP学习32 |
PHP学习E_CORE_WARNING |
PHP学习在PHP启动时警告.这就比如在PHP核心的E_WARNING |
PHP学习64 |
PHP学习E_COMPILE_ERROR |
PHP学习致命的编译时错误.这就比如通过了Zend脚本引擎产生的E_ERROR |
PHP学习128 |
PHP学习E_COMPILE_WARNING |
PHP学习非致命编译时警告.这就比如通过了Zend脚本引擎产生E_WARNING |
PHP学习256 |
PHP学习E_USER_ERROR |
PHP学习致命的用户生成的错误,这类似于程序员使用PHP函数 trigger_error() 设置的 E_ERROR |
PHP学习512 |
PHP学习E_USER_WARNING |
PHP学习非致命的用户生成的警告,这类似于程序员使用PHP函数 trigger_error 设置的 E_WARNING |
PHP学习1024 |
PHP学习E_USER_NOTICE |
PHP学习用户生成的通知,这类似于程序员使用PHP函数trigger_error 设置的 E_NOTICE |
PHP学习2048 |
PHP学习E_STRICT |
PHP学习运行时通知.PHP建议改变你的代码,以赞助该代码的互操作性和兼容性 |
PHP学习4096 |
PHP学习E_RECOVERABLE_ERROR |
PHP学习可捕获的致命错误,类似 E_ERROR,但可被用户定义的处理程序捕获(参见 set_error_handler()) |
PHP学习8191 |
PHP学习E_ALL |
PHP学习所有的错误和警告,除级别E_STRICT(在PHP6.0中,E_STRICT将是E_ALL的一部分) |
PHP学习这里值得注意的是,$level为0的时候是关闭错误输出,也便是任何错误都不会输出.
PHP学习2.set_error_handler()
PHP学习定义和用法
PHP学习set_error_handler() 函数设置用户自定义的错误处理函数.
PHP学习该函数用于创建运行时期间的用户自己的错误处理办法.
PHP学习该函数会返回旧的错误处理程序,若失败,则返回 null.
PHP学习语法
PHP学习set_error_handler(error_function,error_types)
PHP学习提示:如果使用了该函数,会完全绕过标准的 PHP 错误处理函数,如果必要,用户定义的错误处理程序必需终止 (die() ) 脚本,
PHP学习注释:如果在脚本执行前发生错误,由于在那时自定义程序还没有注册,因此就不会用到这个自定义错误处理程序.
PHP学习测试代码如下:
PHP学习
/**
*
* @param type $error_level 错误级别
* @param type $error_message 错误信息
* @param type $error_file 可选 错误文件
* @param type $error_line 可选 错误行
* @param type $error_context 可选.规定一个数组,包含了当错误发生时在用的每个变量以及它们的值.
*/
function my_error($error_level, $error_message, $error_file, $error_line, $error_context) {
echo date('Y-m-d H:i:s') . $error_level . $error_message . $error_file . $error_line;
var_dump($error_context);
}
set_error_handler('my_error', E_ALL);
print_r($a);
PHP学习//通过上案例可以得知,在注册 my_error 办法时,系统会自动覆盖原有的错误处理 error_fuction() 办法
以上程序运行结果:
PHP学习
PHP学习自定义错误触发器
PHP学习定义和用法
PHP学习trigger_error() 函数创建用户定义的错误消息.
PHP学习trigger_error() 用于在用户指定的条件下触发一个错误消息.它与内建的错误处理器一同使用,也可以与由 set_error_handler() 函数创建的用户自定义函数使用.
PHP学习如果指定了一个不合法的错误类型,该函数返回 false,否则返回 true.
PHP学习语法
PHP学习trigger_error(error_message,error_types)
PHP学习参数 |
PHP学习描述 |
PHP学习error_message |
PHP学习必须.规定错误消息.长度限制为 1024 个字符. |
PHP学习error_types |
PHP学习可选.规定错误消息的错误类型. 可能的值:
|
PHP学习
/**
*
* @param type $level
* @param type $msg
*/
function my_error($level, $msg) {
switch ($level) {
case E_USER_ERROR:
echo "ERROR:<br/>";
break;
case E_USER_WARNING:
echo "WARNING:<br/>";
break;
case E_USER_NOTICE:
echo "NOTICE:<br/>";
break;
default:
break;
}
echo "错误编号:" . $level . " <br/>";
echo "错误信息:" . $msg;
}
//注册错误处理器
set_error_handler('my_error');
if (89 > 8) {
//调用错误触发器
trigger_error('这是错误啊', E_USER_WARNING);
}
PHP学习运行结果如下:
PHP学习WARNING:
错误编号:512
错误信息:这是错误啊
PHP学习以上所述便是本文的全部内容了,希望大家能够喜欢.
欢迎参与《PHP实战:PHP 错误处理机制》讨论,分享您的想法,维易PHP学院为您提供专业教程。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/9744.html