PHP 错误处理、自定义错误、错误编号

197 阅读2分钟
  • PHP 开启或关闭错误提示

  • 错误分类

    • 语法错误: 程序不能运行,是在运行之前,检查语法的时候,就发现语法出错.结果是提示错误,不运行程序。
    • 运行时错误: 语法检查没错,然后开始运行,在运行中出现了错误,然后报错。 这是开发中最常见的错误。
    • 逻辑错误: 程序能运行,且一直到结束没有报错,但执行得到的结果却是错的。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <?php
  // 在PHP文件最顶部加入开启错误提示代码
  ini_set("display_errors", "On"); 
  error_reporting(E_ALL | E_STRICT);

  // 错误的导入文件以及输出未定义的对象
  include 'lib/nav1.html';
  echo '<br>当前的页码为:' . $page;
  ?>
</body>
</html>

  • 常见错误代码
    • 是指在程序运行时,发生的错误,系统会针对每种错误,给出相应的错误代号,并进行提示(报错)。
    • 另外,程序如果在运行之前检查语法的时候就发现语法错误,也会报错,也有一个错误代号。
E_NOTICE:
提示性错误,轻微;
错误发生后,后面的程序继续执行。

E_WARNING:
警告性错误,稍微严重;
错误发生后,后面的程序继续执行。

E_ERROR:
严重错误致命错误;
错误发生后,后面的程序不再执行!

E_PARSE:
语法错误(语法解析错误) ;
语法解释错误,是直接就不运行程序。

E_USER_NOTICE:
用户自定义的提示错误

E_USER_WARNING:
用户自定义的警告错误

E_USER_ERROR:
用户自定义的严重错误

E_ALL:
它是一个代表“所有”错误的代号。

......

1、这些错误代号,其实只是系统预先设定的一些常量,他们的值大约是: 1,2,4,8,16..... 2、这些错误代号,通常只是用于对错误控制时进行“设置”使用。 3、他们是一系列的整数,并具有一定的规律: 1,2,4,8,16,32,64, ...... 4、可以在php.ini中使用(设置)他们,如下所示: * 在 php.ini 文件中搜索 "Error Level Constants" * 找到 error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT * 修改这一行可以指定显示什么类型的错误


  • 错误触发

    • 就是发生了一个错误的意思——即触发了错误。

    • 有两种情形会触发错误: 1、程序本身有错,则运行时就会触发错误(并提示)。 2、程序本身没错,但出现不符合预计的情形(比如数据不符合要求)。 此时程序员可以主动触发一个错误,也可以说是由程序员“主动创建一个错误 ”——这就是“用户错误”

      • 包括: E_USER_NOTICE: E_USER_WARNING: E_USER_ERROR: 如何触发“用户错误”呢?
    • 自定义错误触发语法: trigger_eror(自定义错误提示内容”,自定义错误的代号);

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <?php
  // 在PHP文件最顶部加入开启错误提示代码
  ini_set("display_errors", "On"); 
  error_reporting(E_ALL | E_STRICT);

  // trigger_error("错误原因", '用户错误代码');
  trigger_error("错误原因", E_USER_NOTICE);
  ?>
</body>
</html>