Правильная реализация глобального ErrorHandler

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
azz
Сообщения: 197
Зарегистрирован: 2016.07.06, 17:20

Правильная реализация глобального ErrorHandler

Сообщение azz »

Есть глобальный ErrorHandler. Есть желание вместо An internal error has occurred while processing your request отдавать более осмысленные тексты ошибок. Начал с такого:

Код: Выделить всё

$error = new ActionError(
    ActionError::SERVER_ERROR,
    $exception->getMessage()
);
Всё бы ничего, но теперь сюда попадает текст любых ошибок, в т.ч. те, которые в проде отдавать не нужно - ошибки pdo, несоответствие типов, синтаксические ошибки и т.д.

Хотелось бы отфильтровать "мои" исключения от "не моих". Исключения на данный момент делаю как extends базовых исключения вроде InvalidArgumentException, RuntimeException и т.п.

Решением выглядит объявить одно базовое исключение, и все "мои" наследовать от него, и в обработчике проверять instanceof. Если "моё", текст брать из getMessage(), если нет - подставлять общую фразу "internal error".

Нормально так или есть пути получше?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Правильная реализация глобального ErrorHandler

Сообщение samdark »

Можно завести интерфейс пустой и реализовывать его. Тогда наследование ломать не придётся.
azz
Сообщения: 197
Зарегистрирован: 2016.07.06, 17:20

Re: Правильная реализация глобального ErrorHandler

Сообщение azz »

Отличная идея, спасибо)
Ответить