PHP: вызвать фатальную ошибку?
Я хотел бы иметь возможность бросить фатальную, неуловимую ошибку в моем классе php, когда пользователь моего класса злоупотребляет ею за то, что я не собирался. Я не хочу, чтобы он/она мог восстановиться с помощью предложения catch.
Я знаю о trigger_error
, но я могу только заставить его выдавать предупреждения или уведомления.
4 ответов
e_user_error-подходящая константа.
trigger_error("Fatal error", E_USER_ERROR);
см. также первый пример страница руководства и список ошибок PHP (из trigger_error могут выдаваться только те, которые начинаются с E_USER*).
Примечание: Если вы используете пользовательский обработчик ошибок (см. set_error_handler)
E_USER_ERROR
не будет останавливаться / выходить/умирать, если обработчик ошибок не вернет false
nutshell : ваш пользовательский обработчик ошибок эффективно определяет, если E_USER_ERROR
считается фатальной
debug_print_backtrace();
trigger_error("As much information as you can provide, please", E_USER_ERROR);
exit();
exit () полностью завершает PHP-скрипт. Больше информации вы можете предоставить пользователям и разработчикам об ошибке, тем лучше. Коды ошибок устарела.
Edit: использование E_USER_ERROR должно завершить скрипт в любом случае, поэтому перемещено debug_print_backtrace() перед trigger_error().
Если вы используете PHP 7 или выше, класс тоже работает:
$flag = false;
try {
if($flag == false) {
throw new Error('An error occured');
}
...
}
catch(Error $e) {
echo $e -> getMessage();
}
Если поставить throw new Error('An error occured');
за пределами Try Catch
, вы получите фатальную ошибку.