trigger_error()
вызывает ошибку, которая обрабатывается обработчиком ошибок.
С помощью trigger_error()
вы можете корректно обрабатывать ошибки, например:
<code> set_error_handler('ErrorHandler');
function ErrorHandler($errno, $errmsg, $filename, $linenum, $vars)
{
print '<pre style="line-height: 2em;">';
printf("==> Error in `%s' line %s: %s\n\n", $filename, $linenum, $errmsg);
debug_print_backtrace();
print '
';выход ($ ERRNO);}
Это простой пример, но веб-сайт нашей компании отображает дружественную страницу с ошибкой и отправляет мне электронное письмо, что я идиот и где-то напутал: -)
преимущество перед die()
или exit()
должно быть ясно: -)
exit()
все еще можно использовать, когда вам нужно выйти.Например, когда вы генерируете шаблон, выведите его и хотите, чтобы выполнение кода было остановлено.Или когда вы отправляете заголовок header('Location: ...');
и хотите убедиться, что выполнение остановлено ... Просто не используйте его для обработки непредвиденных ситуаций (например, ошибок).
trigger_error()
также дает вам лучшую степеньконтроля.Вы можете отправить E_USER_NOTICE
, если вы хотите, чтобы выполнение остановилось, но при этом отображалось уведомление, и E_USER_ERROR
, если вы хотите, чтобы выполнение stop .
. Кроме того, вы можете написать более сложный обработчик ошибок.функции, в которых некоторые IP-адреса видят ошибку, а остальные - нет ... Kindda полезна для разработки.
Будьте осторожны с чрезмерно сложными обработчиками ошибок, однако, что происходит, если ошибка возникает внутри обработчика ошибок ...?Возможно, вы видели Начало:)