diff --git a/reference/errorfunc/functions/restore-exception-handler.xml b/reference/errorfunc/functions/restore-exception-handler.xml index 0ccf779c33a0..a2d8251b5fcc 100644 --- a/reference/errorfunc/functions/restore-exception-handler.xml +++ b/reference/errorfunc/functions/restore-exception-handler.xml @@ -20,6 +20,27 @@ exception handler (which could be the built-in or a user defined function). + + + While an exception handler is running, no exception handler is active: as of + PHP 8.3.0 the engine unsets it before invoking it, so that an exception + thrown by the handler is not passed back to it. + + + As of PHP 8.3.5 the engine also pushes the handler it is about to invoke onto + the handler stack. A restore_exception_handler call made + from within an exception handler therefore pops that entry and re-installs + the handler that is currently running; a second call is needed to install the + handler that was active before it. + + + The running handler is re-installed automatically when it returns, but only + if no exception handler is active at that point: a handler that calls + set_exception_handler or + restore_exception_handler is left in charge of the + handler stack itself. + + @@ -34,6 +55,40 @@ + + &reftitle.changelog; + + + + + + &Version; + &Description; + + + + + 8.3.5 + + The exception handler being invoked is now pushed onto the handler + stack, so restore_exception_handler called from + within an exception handler re-installs the handler that is currently + running; restoring the handler that was active before it now requires + two calls. + + + + 8.3.0 + + The active exception handler is now unset while it runs. + + + + + + + + &reftitle.examples; @@ -70,18 +125,16 @@ - + &reftitle.seealso; - - - set_exception_handler - get_exception_handler - set_error_handler - restore_error_handler - error_reporting - - + + set_exception_handler + get_exception_handler + set_error_handler + restore_error_handler + error_reporting + &reftitle.seealso; - - - get_exception_handler - restore_exception_handler - restore_error_handler - error_reporting - Exceptions - - + + get_exception_handler + restore_exception_handler + restore_error_handler + error_reporting + Exceptions +