PHP set_exception_handler 错误处理函数

  • 定义和用法

    set_exception_handler - 设置用户自定义的异常处理函数
  • 版本支持

    PHP4 PHP5 PHP7
    不支持 支持 支持
    7.0.0 传入 exception_handler 的参数从 Exception 改为 Throwable
    5.5.0 之前版本里,如果传入 NULL ,函数会返回 TRUE。 自 PHP 5.5.0 后,会返回上一次的异常处理器。
  • 语法

    set_exception_handler (callable $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 值用于重置异常处理函数为默认值。
  • 返回值

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

    以下示例展示了通过触发错误并以用户自定义的程序来进行内部异常的处理。
    <?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";
    
  • 相关函数

    restore_exception_handler() - 恢复之前定义过的异常处理函数。
    restore_error_handler() - 还原之前的错误处理函数
    error_reporting() - 设置应该报告何种 PHP 错误