try method fatal errores error custom catch capturar php fatal-error

method - try catch php 7



PHP: ¿Desencadenar error fatal? (4)

Me gustaría poder lanzar un error irrecuperable y fatal en mi clase de php cuando un usuario de mi clase abusa de él por algo que no pretendía. No quiero que él / ella pueda recuperarse con una cláusula catch. Sé de trigger_error , pero solo puedo hacer que emita advertencias o avisos.


E_USER_ERROR es la constante adecuada.

trigger_error("Fatal error", E_USER_ERROR);

Vea también el primer ejemplo de la página del manual y la lista de errores de PHP (solo los que comienzan con E_USER * pueden ser emitidos desde trigger_error).


Nota: si está utilizando un controlador de errores personalizado (consulte set_error_handler ) E_USER_ERROR NO detendrá / saldrá / morirá a menos que el controlador de errores devuelva falso

En pocas palabras: su controlador de errores personalizado determina efectivamente si E_USER_ERROR se trata como un fatal


Si está utilizando PHP 7 o superior, la clase Error también funciona:

$flag = false; try { if($flag == false) { throw new Error(''An error occured''); } ... } catch(Error $e) { echo $e -> getMessage(); }

Si pones throw new Error(''An error occured''); fuera de Try Catch , obtendrás un error fatal.


debug_print_backtrace(); trigger_error("As much information as you can provide, please", E_USER_ERROR); exit();

exit () termina el script PHP completamente. Cuanta más información pueda proporcionar a los usuarios o desarrolladores sobre el error, mejor. Los códigos de error son pasados.

Edición: el uso de E_USER_ERROR debería terminar la secuencia de comandos de todos modos, por lo que se movió debug_print_backtrace () antes de trigger_error ().