错误级别
PHP中的错误不仅有多种类型,并且每个错误都有一个错误级别与之关联,用于表示当前错误的等级,如Error、Warning、Notice等。PHP采用常量的形式来表示错误级别,每个错误级别都是一个整型, PHP中常见的错误级别如表1所示。
表1 PHP中常见的错误级别
级别常量 | 值 | 描述 |
---|---|---|
E_ERROR | 1 | 致命的运行时错误,这类错误不可恢复,会导致脚本停止运行 |
E_WARNING | 2 | 运行时警告,仅提示信息,但是脚本不会停止运行 |
E_PARSE | 4 | 编译时语法解析错误,说明代码存在语法错误,无法执行 |
E_NOTICE | 8 | 运行时通知,表示脚本遇到可能会表现为错误的情况 |
E_CORE_ERROR | 16 | 类似E_ERROR,是由PHP引擎核心产生的 |
E_CORE_WARNING | 32 | 类似E_WARNING,是由引擎核心产生的 |
E_COMPILE_ERROR | 64 | 类似E_ERROR,是由Zend脚本引擎产生的 |
E_COMPILE_WARNING | 128 | 类似E_WARNING,是由Zend脚本引擎产生的 |
E_USER_ERROR | 256 | 类似E_ERROR,由用户在代码中使用trigger_error()产生的 |
E_USER_WARNING | 512 | 类似E_WARNING,由用户在代码中使用trigger_error()产生的 |
E_USER_NOTICE | 1024 | 类似E_NOTICE,由用户在代码中使用trigger_error()产生的 |
E_STRICT | 2048 | 严格语法检查,确保代码具有互用性和向前兼容性 |
E_DEPRECATED | 8192 | 运行时通知,对未来版本中可能无法正常工作的代码给出警告 |
E_ALL | 32767 | 表示所有的错误和警告信息(在PHP 5.4之前不包括E_STRICT) |
为了使读者更好地理解这些错误级别,下面针对开发过程中经常遇到的错误信息进行演示。
1. Notice(E_NOTICE)
遇到Notice提示信息通常是代码不严谨造成的,不会影响脚本继续执行,示例代码如下。
// ① 使用未定义的变量
echo $var; // 提示信息“Notice:Undefined variable…”
// ② 使用未定义的常量
echo PI; // 提示信息“Notice:Use of undefined constant…”
对于上述错误,当使用一个不确定是否存在的变量或常量时,应先判断变量是否存在或常量是否已经定义,从而避免遇到这些错误。在实际开发中,建议大家对于Notice级别的错误不要忽略,要尽量保持代码的严谨和准确。
2. Warning(E_WARNING)
Warning错误级别相比Notice更严重一些,不会影响脚本继续执行,示例代码如下。
// ① 除法运算时,除数为0
echo 5 / 0; // 提示信息“Warning:Division by zero…”
// ② 使用include包含不存在的文件
include '1234'; // 提示信息“Warning:include():Failed opening…”
对于上述错误,在进行除法运算前,可以使用if判断除数是否为0,若为0则拒绝执行除法运算;在使用include包含文件前,先判断该文件是否存在,防止错误发生。
3. Fatal error(E_ERROR)
Fatal error是一种致命错误,一旦发生这种错误,PHP脚本会立即停止执行。例如,调用未定义的函数时就会发生致命错误,示例代码如下。
display(); // Fatal error:Uncaught Error:Call to undefined function …
echo 'hello'; // 前一行发生错误,此行代码不会执行
对于致命性错误,由于是在运行时发生,而且一旦发生则程序会立即停止,具有一定的隐蔽性。因此,在开发时,需要对程序进行充分的测试。