1.php的错误,警告,异常处理如何实现,那些函数用于处理对应的错误
php 异常提示分为三类 error/warning/notice
错误补充:
fatal error:致命错误(脚本终止运行)
e_error // 致命的运行错误,错误无法恢复,暂停执行脚本
e_core_error // php启动时初始化过程中的致命错误
e_compile_error // 编译时致命性错,就像由zend脚本引擎生成了一个e_error
e_user_error // 自定义错误消息。像用php函数trigger_error(错误类型设置为:e_user_error)
e_recoverable_error //可被捕捉的致命错误。 它表示发生了一个可能非常危险的错误,但是还没有导致php引擎处于不稳定的状态。
parse error:编译时解析错误,语法错误(脚本终止运行)
e_parse //编译时的语法解析错误
警告补充:警告错误(仅给出提示信息,脚本不终止运行)
e_warning // 运行时警告 (非致命错误)。
e_core_warning // php初始化启动过程中发生的警告 (非致命错误) 。
e_compile_warning // 编译警告
e_user_warning // 用户产生的警告信息
异常通知补充:通知错误(仅给出通知信息,脚本不终止运行)
e_notice // 运行时通知。表示脚本遇到可能会表现为错误的情况.
e_user_notice // 用户产生的通知信息。
php错误处理实现:
register_shutdown_function('funcname') // 参数是需要捕获错误的函数名称,但是register_shutdown_function,只能捕获运行时候的致命错误,不能捕获解释时的执行错误,因为它时程序执行完成之后执行的函数(比如语法错误,这种运行时就会产生的错误时不会被捕捉的)
set_error_handler(‘funcname’) //参数是需要捕获的回调的函数名,区别于register_shutdown_function,它是在函数运行期间捕获到错误
当目标文件执行遇到错误的时候,系统会回调指定函数:
例子:
<?php register_shutdown_function( "fatal_handler" ); set_error_handler("error_handler"); define('e_fatal', e_error | e_user_error | e_core_error | e_compile_error | e_recoverable_error| e_parse ); //获取fatal error function fatal_handler() { $error = error_get_last(); if($error && ($error["type"]===($error["type"] & e_fatal))) { $errno = $error["type"]; // $errfile = $error["file"]; $errline = $error["line"]; $errstr = $error["message"]; error_handler($errno,$errstr,$errfile,$errline); } } //获取所有的error function error_handler($errno,$errstr,$errfile,$errline){ $str=<<<eof "errno":$errno "errstr":$errstr "errfile":$errfile "errline":$errline eof; //获取到错误可以自己处理,比如记log、报警等等 echo $str; } //error_get_last() 捕获到的执行错误结果 //error_clear_last() 清除最后一次产生的错误信息 //上面两者可以捕获所有错误,警告, 异常,但作性能考虑,不建议使用其捕获警告异常
相关推荐:
浅析php错误处理,自动加载,栈堆内存以及运行模式
php错误处理实例方法
php错误与异常调试视频教程资源分享
以上就是php 错误处理及实现 - csdn博客的详细内容。