天天看点

PHP基础---错误处理

错误处理

指的是系统(或者用户)在对某些代码进行执行的时候,发现有错误,就会通过错误处理的形式告知程序员

错误分类

1)语法错误:在编译过程中不通过,所以代码不会执行(Parse error)

2) 运行时错误:代码编译通过,但是代码在执行的过程中会出现一些条件不满足导致的错误(runtime error)

3)逻辑错误:程序员在写代码的时候不够规范,出现了一些逻辑性的错误,导致代码正常执行,但是得不到想要的结果

错误代号

(1)系统错误:

E_PARSE:编译错误,代码不会执行

E_ERROR:fatal error,致命错误,会导致代码不能正确继续执行(出错的位置断掉)

E_WARNING:警告错误,不会影响代码执行,但是可能得到意想不到的结果

E_NOTICE:通知错误,不会影响代码执行

(2)用户错误:E_USER_ERROR、E_USER_WARING、E_USER_NOTICE

用户在使用自定义错误触发的时候,会使用到的错误代号(系统不会用到)

(3)其他:E_ALL,代表着所有的错误(通常在进行错误控制的时候使用比较多),建议在开发过程中(开发环境)使用

所有以E开头的错误常量(代号)其实都是由一个字节存储,然后每一种错误占据一个对应的位,如果想进行一些错误的控制,可以使用位运算进行操作

排除通知级别notice:E_ALL&~E_NOTICE

只要警告和通知:E_WARING | E_NOTICE

错误触发

运行时触发

人为触发

PHP基础---错误处理

错误显示设置

在PHP中,其实有两种方式来设置当前脚本的错误处理

1、PHP配置文件:全局配置:php.ini文件

display_errors:是否显示错误

erro_reporting:显示什么级别的错误

PHP基础---错误处理

2、可以在运行的PHP脚本中设置:在脚本中定义的配置级别比配置文件高(通常开发当中都会在代码中去进行控制和配置)

error_reporting:设置对应的错误显示级别

ini_set(‘配置文件中的配置项’,配置值),如:

ini_set(‘error_reporting’,E_ALL);

ini_set(‘display’,1);

错误日志设置

在生产环境中,一般不显示错误(错误也比较少),但是又不可避免会出现错误(测试的时候不会发现所有问题),这个时候不希望客户看到,但是又希望捕捉到可以让后台程序员去修改:需要保存到日志文件中,需要在PHP配置文件中或者代码中(ini_set)设置对应

error_log配置项:

1、开启日志功能

PHP基础---错误处理

2、指定日志保存路径

PHP基础---错误处理

自定义错误处理

最简单的错误处理:trigger_errors()函数,但是该函数不会阻止系统报错

PHP系统提供了一种用户处理错误的机制:用户自定义错误处理函数,然后将该函数增加到系统错误处理的句柄中,然后系统会在碰到错误之后,使用用户定义的错误函数

1、如何将用户自定义的函数放到系统中?set_erro_handler()

PHP基础---错误处理

2、自定义错误处理函数,系统有要求

PHP基础---错误处理

代码实现:

1、自定义错误处理函数:注意参数

PHP基础---错误处理

2、注册自定义函数:修改错误处理机制

PHP基础---错误处理

当前属于简单自定义模式,如果要复杂,可以在某些影响代码功能的错误发生后,让用户跳转到某个指定界面。