PHP错误处理机制
在日常的项目开发过程中,总会出现一些意想不到的异常错误。如果我们处理得不相对好,程序看起来不专业,很可能会成为别人攻击系统的有效信息;一些错误和异常将终止脚本执行。这时,如果没有错误提示信息,我们只能从头开始读代码。要知道项目中数百行代码对我们来说有多可怕,如何快速准确地定位项目开发过程中的异常和错误,并进行相应的处理?本文将与您分享对错误和异常处理的理解,然后以备忘录的形式相互学习和交流。
系统错误处理程序:
正常情况下,PHP会正常输出错误,但在某些框架中,可能会影响错误的输出。可能是框架本身有自己的处理机制,也可能是在代码中处理。通常,设置这些功能:
1.error_reporting()。设置PHP的错误报告级别并返回到当前级别
错误报告(报告级别)
如果未指定参数级别,将返回当前错误级别。以下是可能的级别值:
价值
常数
形容
一个
E_ERROR
致命的运行时错误。此错误无法回收。脚本执行被中断。
2
电子警告
非致命运行时警告。脚本执行不会中断。
四
E_PARSE
编译时出现分析错误。应该只由解析器生成的解析错误
八
E _ NOTICE
运行时通知。脚本发现可能是一个错误,但它也可能在脚本通常运行时发生。
16
E_CORE_ERROR
PHP启动时出现致命错误。这就像PHP核心的E_ERROR
32
E_CORE_WARNING
PHP启动时警告。这就像PHP核心的E_WARNING
64
E_COMPILE_ERROR
致命的编译时错误。这就像传递Zend脚本引擎生成的E_ERROR
128
E_COMPILE_WARNING
非致命编译时警告。这就像通过Zend脚本引擎生成E_WARNING一样
256
E_USER_ERROR
用户生成的致命错误,类似于程序员使用PHP函数trigger_error()设置的E_ERROR
512
电子用户警告
非致命的用户生成的警告,类似于程序员使用PHP函数trigger_error设置的E_WARNING
1024
电子用户通知
用户生成的通知,类似于程序员使用PHP函数trigger_error设置的E_NOTICE
2048
E_STRICT
运行时通知。PHP建议更改您的代码,以帮助代码的互操作性和兼容性
4096
E _ RECOVERABLE _ ERROR
可以捕获的致命错误,类似于E_ERROR,但可以由用户定义的处理程序捕获(请参见set_error_handler())
8191
E_ALL
除了E_STRICT级别以外的所有错误和警告(在PHP6.0中,E_STRICT将是E_ALL的一部分)
这里值得注意的是,当$level为0时,错误输出关闭,即不会输出错误。
2.set_error_handler()
定义和用法
Set_error_handler()函数设置用户定义的错误处理函数。
该函数用于在运行时创建用户自己的错误处理方法。
该函数返回旧的错误处理程序,如果失败则返回null。
语法
set _ error _ handler(error _ function,error _ types)
参数
形容
错误函数
必选。指定发生错误时要运行的函数。
错误类型
可选。指定在哪个错误报告级别显示用户定义的错误。默认为E_ALL。
提示:如果使用这个函数,标准的PHP错误处理函数将被完全绕过。如有必要,用户定义的错误处理程序必须终止(die())脚本。
注意:如果在执行脚本之前出现错误,将不会使用自定义错误处理程序,因为自定义程序当时尚未注册。
测试代码如下:
/* * *指定一个数组,该数组包含发生错误时使用的每个变量及其值。*/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 _ linevar _ dump($ error _ context);}set_error_handler('my_error ',E _ ALL);print _ r($ a);//从上面的情况可以知道,注册my_error方法时,系统会自动覆盖原来的错误处理error _ fuction()方法,以及上面的程序运行结果:
自定义错误触发器
定义和用法
函数的作用是:创建一条用户自定义的错误信息。
Trigger_error()用于在用户指定的条件下触发错误消息。它可以与内置的错误处理程序一起使用,也可以与set_error_handler()函数创建的用户定义函数一起使用。
如果指定了非法的错误类型,函数返回false,否则返回true。
语法
触发器错误(错误消息,错误类型)
参数
形容
错误消息
必选。指定错误消息。长度限制为1024个字符。
错误类型
可选。指定错误消息的错误类型。可能的值:
e _ user _ error e _ user _ warning e _ user _ notice测试代码如下:
/* * * * @ param type $ level * @ param type $ msg */function my _ error($ level,$ msg){ switch($ level){ case E _ USER _ error : echo ' error : br/';打破;案例E _ USER _ WARNING:回显' warn : br/';打破;病例E_USER_NOTICE:回声' notice : br/';打破;default: break} echo“错误号:“”。$级别。br/';“Echo”错误消息:“”。$ msg}//注册错误处理程序set _ error _ handler(' my _ error ');If (89 8) {//调用错误trigger_error('这是一个错误',E _ USER _ WARNING);}运行结果如下:
警告:错误号:512错误消息:这是一个错误。
以上就是本文的全部内容,希望大家喜欢。