定义和用法
set_exception_handler() 函数设置用户自定义的异常处理函数。
该函数用于创建运行时期间的用户自己的异常处理方法。
该函数会返回旧的异常处理程序,若失败,则返回 null。
语法
set_exception_handler(exception_function)
参数 | 描述 |
---|---|
error_function | 必需。规定未捕获的异常发生时调用的函数。 该函数必须在调用 set_exception_handler() 函数之前定义。 这个异常处理函数需要需要一个参数,即抛出的 exception 对象。 |
提示和注释
提示:在这个异常处理程序被调用后,脚本会停止执行。
例子
<?php function myException($exception) { echo "<b>Exception:</b> " , $exception->getMessage(); } set_exception_handler('myException'); throw new Exception('Uncaught Exception occurred'); ?>
输出:
Exception: Uncaught Exception occurred
例子:
function exception_handler($exception){
echo "发生了未捕获的异常!/n";
echo $exception->getMessage();
}
set_exception_handler('exception_handler');
throw new Exception("-> 作为示例,故意抛出一个异常但不捕获它。/n");
echo "这条语句不会被执行。/n";
/* 使用函数set_exception_handler()可以设置异常处理回调函数,该函数原型如下:
string set_exception_handler(callback exception_handler)
函数exception_handler()接受一个函数名作为参数,该函数名对应的函数称为异常处理回调函数
它在有异常发生但无代码捕获时被自动调用。被调用之后程序立即终止。
函数set_exception_handler()的返回值为原来的异常处理函数名或者NULL(当发生错误或者原来没有异常处理函数时)
*/
需要注意的是:
set_exception_handler(“myException”) 不仅可以接受函数,还可以接受 类的方法(公开的静态方法 及 公开的非静态方法 都可以),但需要以 数组形式 传递,数组的第一值为“类名”,第二个参数为“方法名”,如下代码所示:
1
2
3
4
5
6
7
8
9
10
11
|
<?php
class
App{
function
myException(
$exception
) {
echo
"<b>Exception:</b> "
,
$exception
->getMessage();
}
}
set_exception_handler(
array
(
'App'
,
'myException'
));
throw
new
Exception(
'Uncaught Exception occurred'
);
?>
|