Почему весна предпочитает непроверенные исключения?

Изучая весну, я наткнулся на этот вопрос. Java поддерживает как проверенные, так и непроверенные исключения. Руководство по проектированию, не зависящее от языка, похоже, поддерживает неконтролируемые исключения. Этот вопрос заключается в том, почему использование инверсии управляющего контейнера, такого как Spring, подразумевает, что я должен использовать только непроверенные исключения.

1 ответ

Вопрос "почему использование инверсии управляющего контейнера, такого как Spring, подразумевает, что я должен использовать только непроверенные исключения", немного странный. И я не уверен, что использование IoC подразумевает, что вы должны использовать непроверенные исключения. Проверено против непроверенного - это в конечном итоге вопрос контекста и мнения.

Мой взгляд на это:

Исключения могут быть отнесены к категории проверенных и непроверенных исключений. Это просто означает, что некоторые исключения, проверенные, требуют, чтобы мы указали во время компиляции, как приложение будет вести себя в случае возникновения исключения. Непроверенные исключения не требуют от нас обработки времени компиляции. Чтобы создать такие исключения, вы расширяете класс RuntimeException, который является прямым подклассом Exception. Старый и распространенный принцип, когда речь идет о проверенном и непроверенном, заключается в том, что исключения времени выполнения используются для оповещения о ситуациях, которые приложение обычно не может предвидеть или восстанавливать, в то время как проверенные исключения - это ситуации, в которых хорошо написанное приложение должно ожидать и восстанавливать.

Я сторонник использования только исключений времени выполнения. И если я использую библиотеку, у которой есть метод с проверенным исключением, я создаю метод-оболочку, который превращает его в среду выполнения. Почему не проверены исключения тогда? Дядя Боб в своей книге "Чистый код" утверждает, что они нарушают принцип Open/Closed, поскольку изменение подписи с помощью нового объявления throws может иметь последствия на многих уровнях нашей программы, вызывающей метод.

Я написал пост о работе с исключениями, вы можете проверить его, если хотите: https://dzone.com/articles/how-to-deal-with-exceptions

Другие вопросы по тегам