diff --git a/reference/errorfunc/functions/restore-exception-handler.xml b/reference/errorfunc/functions/restore-exception-handler.xml index 953382bcd..ea9160b60 100644 --- a/reference/errorfunc/functions/restore-exception-handler.xml +++ b/reference/errorfunc/functions/restore-exception-handler.xml @@ -1,8 +1,5 @@ - - - - + restore_exception_handler @@ -24,6 +21,29 @@ gestor de excepciones (que puede ser la función interna o una función definida por el usuario). + + + Mientras se ejecuta un gestor de excepciones, ningún gestor de excepciones + está activo: a partir de PHP 8.3.0 el motor lo desactiva antes de invocarlo, + de modo que una excepción lanzada por el gestor no le sea transmitida de + nuevo. + + + A partir de PHP 8.3.5 el motor también apila el gestor que va a invocar en la + pila de gestores. Por lo tanto, una llamada a + restore_exception_handler realizada desde dentro de un + gestor de excepciones desapila esa entrada y reinstala el gestor que se está + ejecutando actualmente; se necesita una segunda llamada para instalar el + gestor que estaba activo antes de él. + + + El gestor en ejecución se reinstala automáticamente cuando retorna, pero solo + si en ese momento no hay ningún gestor de excepciones activo: un gestor que + llama a set_exception_handler o a + restore_exception_handler queda a cargo de la pila de + gestores. + + @@ -38,6 +58,40 @@ + + &reftitle.changelog; + + + + + + &Version; + &Description; + + + + + 8.3.5 + + El gestor de excepciones que va a ser invocado ahora se apila en la pila + de gestores, por lo que restore_exception_handler + llamada desde dentro de un gestor de excepciones reinstala el gestor que + se está ejecutando actualmente; restaurar el gestor que estaba activo + antes de él ahora requiere dos llamadas. + + + + 8.3.0 + + El gestor de excepciones activo ahora se desactiva mientras se ejecuta. + + + + + + + + &reftitle.examples; @@ -77,15 +131,13 @@ &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 + - + set_exception_handler @@ -21,6 +20,35 @@ de prueba/atrapa. La ejecución se detendrá después de la llamada a la función callback. + + + + Mientras se ejecuta un gestor de excepciones, ningún gestor de excepciones + está activo: a partir de PHP 8.3.0 el motor lo desactiva antes de invocarlo, + de modo que una excepción lanzada por el gestor no le sea transmitida de + nuevo. Por lo tanto, llamada desde dentro de un gestor, + set_exception_handler indica que no hay ningún gestor + previamente definido. + + + A partir de PHP 8.3.5 el motor también apila el gestor que va a invocar en la + pila de gestores, por lo que restore_exception_handler + llamada desde dentro de un gestor reinstala el gestor que se está ejecutando + actualmente en lugar del que estaba activo antes de él. + + + El gestor en ejecución se reinstala automáticamente cuando retorna, pero solo + si en ese momento no hay ningún gestor de excepciones activo. En cuanto el + gestor llama a set_exception_handler o a + restore_exception_handler, esta restauración automática + se omite y el gestor activo es el que el propio gestor haya dejado + instalado. + + + Por lo tanto, se desaconseja modificar el gestor de excepciones desde dentro + de sí mismo. + + @@ -63,6 +91,41 @@ + + &reftitle.changelog; + + + + + + &Version; + &Description; + + + + + 8.3.5 + + El gestor de excepciones que va a ser invocado ahora se apila en la pila + de gestores y se reinstala una vez que retorna, a menos que el propio + gestor haya modificado la pila. + + + + 8.3.0 + + El gestor de excepciones activo ahora se desactiva mientras se ejecuta, + por lo que set_exception_handler llamada desde + dentro de un gestor indica que no hay ningún gestor previamente + definido. + + + + + + + + &reftitle.examples; @@ -88,15 +151,13 @@ echo "No ejecutado\n"; &reftitle.seealso; - - - get_exception_handler - restore_exception_handler - restore_error_handler - error_reporting - Las excepciones - - + + get_exception_handler + restore_exception_handler + restore_error_handler + error_reporting + Las excepciones +