手机版

PHP错误处理机制

时间:2021-09-09 来源:互联网 编辑:宝哥软件园 浏览:

在日常的项目开发过程中,总会出现一些意想不到的异常错误。如果我们处理得不相对好,程序看起来不专业,很可能会成为别人攻击系统的有效信息;一些错误和异常将终止脚本执行。这时,如果没有错误提示信息,我们只能从头开始读代码。要知道项目中数百行代码对我们来说有多可怕,如何快速准确地定位项目开发过程中的异常和错误,并进行相应的处理?本文将与您分享对错误和异常处理的理解,然后以备忘录的形式相互学习和交流。

系统错误处理程序:

正常情况下,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错误消息:这是一个错误。

以上就是本文的全部内容,希望大家喜欢。

版权声明:PHP错误处理机制是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。