set_exception_handler
PHP Manual
PHP Manual»Funciones de Manejo de Errores»set_exception_handler

set_exception_handler

(PHP 5, PHP 7, PHP 8)

set_exception_handler — Define una función de usuario para gestionar excepciones

Descripción

function set_exception_handler(?callable $callback): ?callable

set_exception_handler() define el manejador de excepciones por defecto si una excepción no es capturada con un bloque de prueba/atrapa. La ejecución se detendrá después de la llamada a la función callback.

Nota:

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.

Parámetros

callback

La función a llamar cuando ocurre una excepción no capturada. Esta función de gestión debe aceptar un argumento, que será el objeto Throwable que fue lanzado. Las clases Error y Exception implementan la interfaz Throwable. Esta es la firma del manejador:

function handler(Throwable $ex): void

null puede ser pasado en su lugar, para reinicializar este manejador a su estado inicial.

Valores devueltos

Retorna el manejador previamente definido o null en caso de error. Si ningún manejador fue previamente definido, null es también retornado.

Historial de cambios

Versión Descripción
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.

Ejemplos

Ejemplo #1 Ejemplo con set_exception_handler()

<?php
function exception_handler(Throwable $exception) {
  echo "Excepción no capturada: " , $exception->getMessage(), "\n";
}

set_exception_handler('exception_handler');

throw new Exception('Excepción no capturada');
echo "No ejecutado\n";
?>

Véase también

To Top