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, вы получите фатальную ошибку.