PHP 错误处理 set_exception_handler() 函数


PHP set_exception_handler() 函数用于处理异常。如果发生未捕获的异常,可以定义将要调用的函数。

可以使用此函数生成错误日志或在代码出现问题时触发警报。set_exception_handler() 函数可优化您网站的错误处理。它提高了应用程序的安全性和稳定性。

语法

以下是 PHP 错误处理 set_exception_handler() 函数的语法 -


 Callable set_exception_handler ( ?callable $callback )

参数

此函数接受 $callback 参数,该参数是在未捕获异常的情况下将运行的函数。这个处理程序函数只需要接受作为参数抛出的 Throwable 对象。ErrorException 都实现了 Throwable 接口。

以下是 $callback 函数的签名 -


void handler ( Throwable $ex )

此处 $ex 是表示引发的异常或错误的变量。

返回值

如果发生先前选择的异常处理程序或错误,则 set_exception_handler() 函数返回 null。如果未定义以前的处理程序,则还会返回 null

PHP 版本

set_exception_handler() 函数首次引入 PHP 5 中,在 PHP 7 和 PHP 8 可继续运行。

示例 1

这个简单的程序有一个基本的异常处理程序设置,可以在 PHP 错误处理 set_exception_handler() 函数的帮助下识别异常并显示错误消息。发生异常时,将调用处理程序以显示消息。


<?php
   // 设置异常处理程序
   set_exception_handler(function($ex) {
      echo "捕获异常: " . $ex->getMessage();
   });
   
   // 引发异常
   throw new Exception("出了问题!");
?>

以下是以下代码的结果 -

捕获异常: 出了问题!

示例 2

在下面的 PHP 代码中,我们将使用 set_exception_handler() 函数并设置一个异常处理程序,将异常消息记录到文件中。它有助于跟踪错误而不向用户显示错误。


<?php
   // 设置异常处理程序以记录错误
   set_exception_handler(function($ex) {
      // 将异常消息记录到文件中
      file_put_contents('error_log.txt', $ex->getMessage() . "\n", FILE_APPEND);
      echo "已记录错误。";
   });
   
   // 引发异常
   throw new Exception("数据库连接失败!");
?> 

这将生成以下输出 -

已记录错误。

示例 3

每当发生异常时,该程序都会在 set_exception_handler() 函数的帮助下向管理员发送电子邮件。在危急情况下,立即将错误通知相关人员会有所帮助。


<?php
   // 设置异常处理程序以发送电子邮件警报
   set_exception_handler(function($ex) {
      // 发送一封包含异常详细信息的电子邮件
      mail("admin@example.com", "错误警报", $ex->getMessage());
      echo "错误警报已发送给管理员。";
   });
   
   // 引发异常
   throw new Exception("关键系统故障!");
?> 

这将创建以下输出 -

错误警报已发送给管理员。