Я согласен с вашим различием относительно того, когда бросать и когда срабатывать. Для меня trigger_error
- это то, что вы хотите отметить, но это не важно для текущего запроса. Например. для отладки.
Поскольку все мои ошибки PHP (примечание: не исключения, а предупреждения, уведомления, фатальные случаи и т. Д.) Регистрируются в рабочей среде, я думаю, что trigger_error
- это удобный способ поместить данные в указанный журнал .
Вот пример:
Я использую HTTP-клиент для доступа к API, который мы интегрируем. Конечно, библиотека, которую я использую, является объектно-ориентированным PHP и поэтому интенсивно использует исключения. Здесь я делаю разные вещи и надеюсь, что этот пример имеет смысл:
- Клиентская библиотека HTTP выдает исключение при сбое фактического запроса - например, из-за проблем с соединением, таких как тайм-аут и т. д. Конечно, я улавливаю эту ошибку, но не повышаю ее до пользователя. Моя оболочка возвращает false, и это равно "Временная ошибка". во внешнем интерфейсе.
- В моем блоке
catch()
я использую trigger_error()
для регистрации отладочной информации о фактической ошибке соединения. Поскольку я получил error_log = syslog
в моем php.ini
, вся эта информация отправляется в системный журнал и, в конечном итоге, в мой мастер журналов.