10.错误处理模块


错误处理模块

1. 认识错误

  • E_ALL - 所有的错误
  • E_ERROR - 致命性的错误(下面代码不会执行了)
  • E_WARNING - 警告性错误(报警,但能运行)
  • E_NOTICE - 提示级别的错误(轻微的错误)
  • E_STRICT - 编码标准化警告(编译时)
  • E_CORE_ERROR - PHP启动时初始化过程中错误
  • E_CORE_WARNING - PHP启动时初始化过程中的警告
  • E_COMPILE_ERROR - 编译时的致命错误c
  • E_COMPILE_WARNING - 编译时的警告错误
  • E_USER_ERROR - 用户自定义的致命错误
  • E_USER_WARNING - 用户自定义的警告
  • E_USER_NOTICE - 用户自定义的提示

2.错误的三个级别

  • error 致命错误 会终止程序运行
  • waring 警告错误 不会终止程序运行
  • notice 提示 算不上错误

3.解决错误

让该看到的人看到,不该看到的人不让他看

  1. 让不该看的的人开不到(老板,黑客,用户)

    • 使用错误抑制符@(只能单行屏蔽,且效率低)

    • 修改PHP文件中的display_errors选项,设置为On显示错误,设置为Off不显示错误(一刀切)

    • 修改error_reporting的配置

    • 使用 error_reporting函数,与上边设置的值一样

      error_reporting(E_ALL & ~ E_WARING & ~ E_NOTICE)  // ~ 除了 & 并且
      
    1. 让该看到的人看到(开发人员)

    2. 比较灵活的错误处理方式 set_error_handler() 用户接管处务处理方式

      PS:设置了之后系统就不会报相应错误了(他也会屏蔽错误)

      <?php
      // 设置,但要写在最上边
      set_error_handler('doError');  // 回调函数
      echo $name;
      include ('./nihai.php');
      
      // 设置回调函数
      function doError($error_no, $error_str, $error_file, $error_line) {
          $error = '错误级别: ' . $error_no . '
      ' . '错误信息: ' . $error_str . '
      ' . '错误文件: ' . $error_file. '
      '. '错误行号: ' . $error_line . '
      '; echo $error; } ?>