set_exception_handler

(PHP 5, PHP 7)

set_exception_handler 设置用户自定义的异常处理函数

说明

set_exception_handler ( callable $exception_handler ) : callable

设置默认的异常处理程序,用于没有用 try/catch 块来捕获的异常。 在 exception_handler 调用后异常会中止。

参数

exception_handler

当一个未捕获的异常发生时所调用函数的名称。 该处理函数需要接受一个参数,该参数是一个抛出的异常对象。 PHP 7 以前的异常处理程序签名:

handler ( Exception $ex ) : void

自 PHP 7 以来,大多数错误抛出 Error 异常,也能被捕获。 ErrorException 都实现了 Throwable 接口。 PHP 7 起,处理程序的签名:

handler ( Throwable $ex ) : void

也可以传递 NULL 值用于重置异常处理函数为默认值。

Caution

注意,如果在用户回调里将 ex 参数的类型明确约束为Exception, PHP 7 中由于异常类型的变化,将会产生问题。

返回值

返回之前定义的异常处理程序的名称,或者在错误时返回 NULL。 如果之前没有定义错误处理程序,也会返回 NULL

更新日志

版本 说明
7.0.0 传入 exception_handler 的参数从 Exception 改为 Throwable
5.5.0 之前版本里,如果传入 NULL ,函数会返回 TRUE。 自 PHP 5.5.0 后,会返回上一次的异常处理器。

范例

Example #1 set_exception_handler() 范例

<?php
function exception_handler($exception) {
  echo 
"Uncaught exception: " $exception->getMessage(), "\n";
}

set_exception_handler('exception_handler');

throw new 
Exception('Uncaught Exception');
echo 
"Not Executed\n";
?>

参见

关注编程学问公众号