PHP 错误异常


简介

PHP 的 Exception 类实现了 Throwable 接口。ErrorException 类扩展了 Exception 类。ErrorException 旨在在您希望捕获和处理原本会被忽略的错误(例如 Notice 或 Warning)时显式抛出。

PHP 核心包含以下预定义的错误常量

常量描述
1E_ERROR致命运行时错误。
2E_WARNING运行时警告(非致命错误)。
4E_PARSE编译时解析错误。
8E_NOTICE运行时通知。
16E_CORE_ERROR在 PHP 初始启动期间发生的致命错误。
32E_CORE_WARNING在 PHP 初始启动期间发生的警告(非致命错误)。
64E_COMPILE_ERROR致命编译时错误。
128E_COMPILE_WARNING编译时警告(非致命错误)。
256E_USER_ERROR用户生成的错误消息。
512E_USER_WARNING用户生成的警告消息。
1024E_USER_NOTICE用户生成的通知消息。
2048E_STRICT如果启用,PHP 会建议您对代码进行更改,以确保代码的互操作性和向前兼容性。
4096E_RECOVERABLE_ERROR可捕获的致命错误。
8192E_DEPRECATED运行时通知。
16384E_USER_DEPRECATED用户生成的警告消息。
32767E_ALL所有错误和警告,包括 E_STRICT

除了从 Exception 类继承的属性和方法之外,ErrorException 类还引入了以下一个属性和一个方法:

protected int severity ;
final public getSeverity ( void ) : int

异常的严重性由与上表中错误类型关联的整数表示。

ErrorException 示例

在以下脚本中,用户定义的函数 errhandler 被设置为错误处理程序,并使用 set_error_handler() 函数。当遇到读取文件未找到的致命错误时,它会抛出 ErrorException。

示例

 在线演示

<?php
function errhandler($severity, $message, $file, $line) {
   if (!(error_reporting() & $severity)) {
      echo "no error";
      return;
   }
   throw new ErrorException("Fatal Error:No such file or directory", 0, E_ERROR);
}
set_error_handler("errhandler");
/* Trigger exception */
try{
   $data=file_get_contents("nofile.php");
   echo $data;
}
catch (ErrorException $e){
   echo $e->getMessage();
}
?>

以上示例显示以下输出

输出

Fatal Error:No such file or directory

更新于: 2020-09-21

347 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告