所有未捕获的异常都可以通过顶层异常处理器来处理。顶层异常处理器使用setexception handler()函数来实现。
set_exception_handler()函数设置用户自定义的异常处理函数。该函数用于创建运行期间用户自己的异常处理方法。该函数会返回旧的异常处理程序,若失败,则返回null。具体的语法格式如下:
set_exception_handler(exception_function)
其中exception_function参数为必需参数,规定未捕获的异常发生时调用的函数,该函数必须在调用set_exception_handler()函数之前定义。这个异常处理函数需要一个参数,即抛出的exception对象。
【例9.10】
<?php
function myException($exception){ //定义顶层的异常处理程序
echo "<b>异常是:</b> " , $exception->getMessage();
}
set_exception_handler('myException');
throw new Exception('正在处理未被捕获的异常'); //抛出异常信息
?>
运行后结果如图9-13所示。上面的代码不存在catch代码块,而是触发顶层的异常处理程序。用户应该使用此函数来捕获所有未被捕获的异常。