Здесь был задан аналогичный вопрос, но поскольку ответы не отвечали на мой вопрос, я спрашиваю:
Я почти никогда не использовал trigger_error
, но всегда выбрасывал исключения, поскольку в моем сознании ошибки являются устаревшими. Но я передумал, думаю, они могут сосуществовать. Бывают случаи, когда ошибки при запуске имеют больше смысла.
Я обновляю эту библиотеку , этот вопрос касается метода send
, но достаточно общий. Это мои рассуждения:
Если константа ключа API не установлена, это не является захватывающей ошибкой. Это ошибка программирования, и ее следует рассматривать как таковую.
Если адрес электронной почты недействителен, это должно быть увлекательным. Это, скорее всего, ошибка пользователя.
Я локомотив? Разве это не нужно и раздражает, или это имеет смысл?
Если бы я использовал библиотеку, мне бы очень не хотелось использовать оба блока try-catch и проверку ошибок старого стиля. И даже если отсутствующий ключ API делает библиотеку непригодной для использования, она все еще является частью приложения.
Я согласен с вашим различием, когда бросать и когда запускать. Для меня trigger_error
также является тем, что вы хотите сделать заметкой, но это не важно для текущего запроса. Например, для целей отладки.
Поскольку все мои ошибки PHP (примечание: не исключения, но предупреждения, уведомления, смертельные и т. Д.) Регистрируются в процессе производства, я думаю, что trigger_error
– это удобный способ получить материал в указанном журнале.
Вот пример:
Я использую HTTP-клиент для доступа к API, который мы интегрируем. Разумеется, библиотека, которую я использую, является объектно-ориентированным PHP и поэтому сильно использует исключения. Я здесь делаю разные вещи, и я надеюсь, что этот пример имеет смысл:
catch()
я использую trigger_error()
для регистрации отладочной информации о фактической ошибке соединения. Так как я получил error_log = syslog
в моем php.ini
вся эта информация отправляется в syslog и в конечном итоге в мой мастер журнала. У обоих есть свои возможности. Как правило, я запускаю trigger_error () для разработчиков, так как в большинстве производственных средах сообщение об ошибках отключается; то, поскольку большинство ошибок приложения, скорее всего, будут из-за неправильного ввода или нежелательных результатов на основе ввода / действий пользователя, я исключаю исключения для лучшего контроля над приложением (обработка этих исключений способом, позволяющим восстанавливать приложение, и ( если необходимо) информирует пользователя о том, что произошло логически.
Изменить: этот пример основан на веб-приложениях; то же самое можно сказать о любой части переменных данных в приложении, не контролируемом пользователем.