Почему весна предпочитает непроверенные исключения? - PullRequest
0 голосов
/ 25 октября 2018

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

1 Ответ

0 голосов
/ 25 октября 2018

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...