restore_exception_handler

(PHP 5, PHP 7)

restore_exception_handler 恢复之前定义过的异常处理函数。

说明

bool restore_exception_handler ( void )

在使用 set_exception_handler() 改变异常处理函数之后,此函数可以 用于还原之前的异常处理程序(可以是内置的或者也可以是用户所定义的函数)。

返回值

该函数总是返回 TRUE

范例

Example #1 restore_exception_handler() 范例

<?php
    
function exception_handler_1(Exception $e)
    {
        echo 
'[' __FUNCTION__ '] ' $e->getMessage();
    }

    function 
exception_handler_2(Exception $e)
    {
        echo 
'[' __FUNCTION__ '] ' $e->getMessage();
    }

    
set_exception_handler('exception_handler_1');
    
set_exception_handler('exception_handler_2');

    
restore_exception_handler();

    throw new 
Exception('This triggers the first exception handler...');
?>

以上例程会输出:

[exception_handler_1] This triggers the first exception handler...

参见

User Contributed Notes

rl7 at shinyblue dot net 24-Feb-2014 07:57
Note that this does not work within an exception handler.

e.g.

<?php

function handler1(Exception $e) {
    echo
"handler1\n";
   
restore_exception_handler();
    throw
$e;
}
function
handler2(Exception $e) {
    echo
"handler2\n";
}

set_exception_handler( 'handler2' );
set_exception_handler( 'handler1' );

throw new
Exception( 'might expect to see handler1, handler2' );

/* Outputs:
handler1
PHP Fatal error:  Uncaught exception 'Exception' with message 'might expect to see handler1, handler2' in /tmp/demo.php:15
Stack trace:
#0 {main}
  thrown in /tmp/demo.php on line 15
*/

?>