执行自定义错误句柄后执行默认异常处理程序

时间:2014-02-27 00:32:40

标签: php exception

在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异常处理程序。那么,我怎样才能使它有效呢?

2 个答案:

答案 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()