PHP学习——错误(五)

一、错误分类

  • 语法错误
  • 运行错误
  • 逻辑错误

二、错误代号

1)系统错误(在PHP中定义成系统常量,可以直接使用)

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

  • E_ERROR: FATAL ERROR,致命错误。会导致代码不可以正确继续执行(出错位置断掉)

  • E_WARNING:warning,警报错误,不会影响代码执行,但是会得到意想不到的结果

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

2)用户错误

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

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

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

排除通知级别notice:E_ALL&E_NOTICE

只要警告和通知:E_WARNING | E_NOTICE

三、错误触发

举例1:漏分号

image-20240205111744819

举例2:除数为0

image-20240205111822461

举例3:人为触发错误(默认为Notice,使用中文需要使用head('Content-type:text/html;charset=utf-8')

image-20240205112233103

image-20240205112651341

四、错误日志设置

​ 在实际生产环境中,不会直接让错误赤裸裸的展示给用户:

  • 不友好

  • 不安全:错误会暴露网站很多信息(路径、文件名)

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

    1. 开启日志功能

      image-20240205113338110
    2. 指定路径

      image-20240205113153723

五、自定义错误处理

将用户自定义函数放到系统中

image-20240205113555328

自定义处理函数,系统有要求

image-20240205113800772image-20240205114500612image-20240205114645563image-20240205114932829