Задать вопрос

Почему современный фрамеворки отказываются от recoverable error?

Собственно вопрос в заголовке.
В нативном php вызов функции, например, trigger_error('Моя некритичная ошибка') вызовет сохранение этой информации в лог ну и обработку всякими хендлерами включая внешние типа newrelic. При этом если я руками не вызову эту функцию с E_USER_ERROR, выполнение программы продолжится дальше (опять же согласно документации php). Но если взять фрамеворк (Yii1/2, Laravel) то мы увидим, что создание ошибок вида E_USER_NOTICE/E_USER_WARNING уже вызовет завершение работы приложения. Т.е. мало того, что они выкинули как класс revoverable error, так еще и изменили поведение стандартной функции php.

Простой пример, зачем нужны recoverable error:
Есть сервис в вакууме рассылки смс к которому подключено два шлюза (основной и запасной). Ошибка подключения к основному шлюзу и отправка через запасной - это восстановимая ошибка, так как не возник отказ в обслуживании. Отказ обоих шлюзов - это уже критическая ошибка.

Так вот, в современных фрамеворках я уже не могу так просто бросить себе recoverable error и приходиться городить огород что бы просто мониторить факт отказа основного шлюза.

Вопрос один: зачем они так сделали?
Извините, немного подгорело.
  • Вопрос задан
  • 474 просмотра
Подписаться 3 6 комментариев