@PostConstruct и непроверенные исключения
Мне тяжело оборачиваться вокруг Javadoc для @PostConstruct
, Это говорит:
Если метод генерирует неконтролируемое исключение, класс НЕ ДОЛЖЕН быть введен в эксплуатацию, за исключением случаев, когда EJB-компоненты могут обрабатывать исключения и даже восстанавливаться после них.
В предыдущих версиях Java документы читали:
Метод НЕ ДОЛЖЕН выдавать проверенное исключение
Последнее требование, похоже, было отброшено. Что означает "Если метод генерирует непроверенное исключение, класс НЕ ДОЛЖЕН быть введен в эксплуатацию"? Должен ли я предпочесть отмеченные исключения непроверенным исключениям в этом контексте или это имеет значение?
Обратите внимание, что я знаю об этом подобном вопросе, но Javadoc с тех пор изменился, и мое отсутствие понимания вокруг неконтролируемого сценария привлекло меня сюда.
1 ответ
Что означает "Если метод генерирует непроверенное исключение, класс НЕ ДОЛЖЕН быть введен в эксплуатацию"?
Точное поведение зависит от контейнера, управляющего компонентом.
Экземпляр компонента CDI будет отброшен и не использован, что обычно приводит к неудовлетворенной зависимости. К сожалению, я не смог найти никаких ссылок.
Экземпляр EJB будет отброшен, и контейнер откатит любую запущенную контейнером транзакцию. Проверьте раздел "9.3.3 Исключения из обратных вызовов жизненного цикла AroundConstruct, PostConstruct и PreDestroy" спецификации EJB 3.2.
Должен ли я предпочесть отмеченные исключения непроверенным исключениям в этом контексте или это имеет значение?
@PostConstruct javadoc запрещает выбрасывать любые проверенные исключения из тела аннотированного метода.