PHP学习笔记(七)(错误相关)

时间:2020-02-01 16:49:45   收藏:0   阅读:71

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

错误分类

  1. 语法错误:用户书写的代码不符合PHP的语法规范,语法错误会导致在编译过程中不通过,所以代码不会执行(Parse error)
  2. 运行时错误:代码编译通过,但是代码在执行的过程中会出现一些条件不满足导致的错误(runtime error)
  3. 逻辑错误:程序员在书写代码的时候不够规范,出现了一些逻辑性的错误,导致代码正常执行,但是得不到想要的结果

错误代号

所有看到的错误代码在PHP种豆被定义成系统常量(可以直接使用)

  1. 系统错误
  1. 用户错误:E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE

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

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

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

错误触发

程序运行时触发:系统自动根据错误发生后,对比对应的错误信息,输出给用户;主要针对代码的语法错误和运行时错误

人为触发:知道某些逻辑可能会出错,从而使用对应的判断代码来触发响应的错误提示

trigger_error(错误提示)

trigger_error("错误信息",E_USER_ERROR);//默认error,代码不会执行
//不填写第二个变量时,默认使用notice

错误显示设置

哪些错误该显示,以及该如何显示

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

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

    display_errors:是否显示错误

    error_reporting:显示什么级别的错误

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

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

    ini_set(‘配置文件中的配置项’)

错误日志设置

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

  1. 不友好
  2. 不安全;错误会暴露网站很多信息(路劲、文件名)

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

自定义错误处理

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

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

  1. 如何将用户自定义的函数放到系统中?set_error_handler()函数;详情请使用PHP用户手册,点击链接:https://www.php.net/manual/zh/function.set-error-handler.php

原文:https://www.cnblogs.com/Joshua-Zhang/p/12248635.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!