Php/docs/function.set-exception-handler
set_exception_handler
(PHP 5, PHP 7)
set_exception_handler — 设置用户自定义的异常处理函数
说明
设置默认的异常处理程序,用于没有用 try/catch 块来捕获的异常。
在 exception_handler
调用后异常会中止。
参数
exception_handler
当一个未捕获的异常发生时所调用函数的名称。 该处理函数需要接受一个参数,该参数是一个抛出的异常对象。 PHP 7 以前的异常处理程序签名:
handler ( Exception
$ex
) : void自 PHP 7 以来,大多数错误抛出 Error 异常,也能被捕获。 Error 和 Exception 都实现了 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() 范例
<?phpfunction exception_handler($exception) { echo "Uncaught exception: " , $exception->getMessage(), "\n";}set_exception_handler('exception_handler');throw new Exception('Uncaught Exception');echo "Not Executed\n";?>
参见
- restore_exception_handler() - 恢复之前定义过的异常处理函数。
- restore_error_handler() - 还原之前的错误处理函数
- error_reporting() - 设置应该报告何种 PHP 错误
- PHP 5 异常