• php-错误处理



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

     

    1、错误分类

    • 语法错误

      用户书写的代码不符合php的语法规范,语法错误会导致代码在编译过程中不通过,所以代码不会执行

    • 运行时错误

      代码编译通过,但是代码在执行的过程中会出现一些条件不满足导致的错误

    • 逻辑错误

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

     

    2、错误代号

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

      1)系统错误:

    •  E_PARSE:编译错误,代码不会执行
    • E_ERROR: fatal error,致命错误,会导致代码不能正确继续执行(出错的位置断掉)
    • E_WARNING: warning,警告错误,不会影响代码执行,但是可能得到意想不到的结果
    • E_NOTICE: notice,通知错误,不会影响代码执行

      2)用户错误:

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

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

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

     

    3、错误触发

    //处理脚本让浏览器按照指定字符集解析的方法
    header('Conent-type:text/html;charest=utf-8')
    • 程序运行时触发:系统自动根据错误发生后,对比对应的错误信息,输出给用户,主要针对代码的语法错误和运行时错误

    • 1 $a=100
      2 echo $a;
      3 //缺少分号

         

    1 $a=10;
    2 $b=0
    3 if($b==0){
    4     //人为触发错误
    5     trigger_error('除数不能为0!') //默认notice,会继续执行
    6     trigger_error('除数不能为0!',E_USER_ERROR) //不会继续执行
    7 }
    8 echo $a / $b;

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

    4、错误显示设置

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

    两种方式:

    • php的配置文件:全局配置,php.ini文件

      display_errors:是否显示错误

      on/off

      error_reporting:显示什么级别的错误

      E_ALL:全局

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

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

      ini_set(配置文件中的配置项,配置值)

      • ini_set('error_reporting',E_ALL)

      • ini_set('display_error',1)

       

     

    5、错误日志设置

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

    1、不友好

    2、不安全:错误会显示很多信息

     

    设置:

    • 进php.ini中;

    • 开启日志功能

      log_errors=on

    • 加error_log='存放路径/php_errors.log'

     

    6、自定义错误处理

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

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

     

     

  • 相关阅读:
    html JS 开发备忘
    C++学习备忘(一)
    博客开通备忘
    自己制作的代码生成工具AutoCoder
    C# 小技巧
    突破list存为模板为10M限制
    开博
    OpenEuler中C语言中的函数调用测试
    socket测试3
    电子公文传输系统验收4开发基础
  • 原文地址:https://www.cnblogs.com/eighty-five/p/13637334.html
Copyright © 2020-2023  润新知