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 ().