Не изменяйте бросок Exception
, прежде чем проверять, какие Exception
с выбрасываются расширяющими типами Message
. Вы можете сломать существующий код (см. Ниже).
Если в каждом расширяющем типе не используется более конкретный Exception
, то вам придется заменить его на более понятный и более идиоматический.
Пользовательский Exception
может содержать дополнительные данные в качестве полей класса. Эти дополнительные данные могут быть установлены в точке выброса (обычно там, где эти данные доступны только) и проверены на верхних уровнях при обработке.
Поскольку этот класс действует как своего рода interface
(рассмотрите возможность его рефакторинга в interface
, действительно), он будет тем, который выставлен / используется повсеместно, и, следовательно, он должен быть максимально четким.
Пара возможных имен может быть
MessageException
PayloadRecoveryException
Применение более конкретного Exception
, имеющего расширяемые типы, которые уже предоставляют конкретные, или даже просто базовое Exception
, приведет к ошибкам компиляции
Начальная точка
Теперь обновите Exception
до «пользовательского». Error !
Так что будьте осторожны, иначе люди будут жаловаться.