在PHP中,我使用set_exception_handler
函数构建了一个错误处理程序。它正在执行我的自定义异常处理程序我希望PHP在执行我的处理程序后也执行默认的异常处理程序。这是我的代码。
function handleException( exception $e){
echo $e->getMessage();
restore_exception_handler();
}
set_exception_handler( 'handleException');
echo $e->getMessage()
已执行,但即使使用restore_exception_handler
后,也无法执行默认的PHP异常处理程序。那么,我怎样才能使它有效呢?
答案 0 :(得分:4)
你应该在恢复之前触发先前的异常处理程序
function handleException( exception $e){
echo $e->getMessage();
restore_exception_handler();
throw $e; //This triggers the previous exception handler
}
set_exception_handler( 'handleException');
答案 1 :(得分:1)
manual很清楚:
如果未在try / catch块中捕获异常,则设置默认异常处理程序。调用exception_handler后,执行将停止。
之后没有机会运行任何代码。
但是,你可以明确地称之为:
try {
// some code that throws an Exception
} catch(Exception $e) {
handleException($e);
// .. run custom handler now
}
此处无需使用restore_exception_handler()
。