В моем исходном классе у меня есть много методов, имеющих этот формат ... Я пытаюсь найти более чистый способ написания блоков перехвата.
Я думаюпроблема больше связана с пониманием того, как исключения обрабатываются в приложениях;В общем, проблема проектирования.
Рассмотрим метод: int foo(int num) throws Exception
Метод foo
возвращает значение, перехватывает исключение / обрабатывает и также генерирует исключение.Рассмотрим эти аспекты.
Если метод работает нормально, без ошибок, он возвращает значение.В противном случае, если есть проблема с его логикой, выдает исключение в методе, перехватывает его и обрабатывает в блоке catch метода.Этот метод также вызывает исключение.
Здесь необходимо рассмотреть два варианта:
- Повторно выдать исключение, как пользовательское исключение для бизнеса / приложения (просто зарегистрируйте его и повторнобросить то же самое или пользовательское исключение), которое необходимо обработать в другом месте - то есть в вызывающем методе вверх по стеку.
- Обработка исключения: это означает, что метод заботится об исключении.Некоторая бизнес / логика приложения происходит в обработке исключений.И метод возвращает значение.
Цель метода, генерирующего исключение, состоит в том, что он обрабатывается в другом месте, как в вызывающем методе.Обработка может походить на восстановление после проблемы исключения или отображение сообщения или прерывание транзакции или что-то еще, определяемое бизнес-логикой.
Выдается исключение из-за проблемы бизнес-логики?Если это так, вполне вероятно, что вы покажете сообщение пользователю или выполните какую-то другую логику и / или предпримете дальнейшие шаги для его восстановления - как позволяют бизнес-правила.
В случае, если исключение выдается какВ результате ситуации, которая не может быть исправлена логикой приложения, выполните соответствующие действия.
В конечном счете, вы должны иметь четкое требование о том, почему выдается исключение, что вы делаете с выданными исключениями и как выобрабатывать их в приложении.Требование применения / логики / правил влияет на проектирование обработки исключений в коде.
Примечания (edit-add) :
- Существует довольно многостатьи, которые объясняют об обработке исключений в бизнес-приложениях в сети.Можно попробовать строку поиска, такую как «Лучшие практики Java исключения».Вот одна из таких статей, в которой есть некоторая полезная информация: Эффективные исключения Java .
- Также необходимо учитывать конструкцию
try-catch-finally
(наряду с различными новыми функциями исключений познакомился с Java 7).