2

我很难理解 Javadoc 的@PostConstruct. 它说:

如果该方法抛出未经检查的异常,则该类不得投入使用,除非 EJB 可以处理异常,甚至从异常中恢复

在 Java 的早期版本中,文档如下:

该方法不得抛出已检查异常

后一个要求似乎已被删除。“如果该方法引发未经检查的异常,则该类不得投入使用”是什么意思?在这种情况下,我应该更喜欢检查的异常而不是未经检查的异常还是这有关系?

请注意,我知道这个类似的问题,但是 Javadoc 已经发生了变化,我对未经检查的场景缺乏理解是吸引我来到这里的原因。

4

1 回答 1

0

“如果该方法引发未经检查的异常,则该类不得投入使用”是什么意思?

确切的行为取决于管理 bean 的容器。

CDI bean 的实例将被丢弃并且不被使用,这通常会导致不满足的依赖关系。不幸的是,我找不到任何参考。

EJB 的一个实例将被丢弃,容器将回滚任何容器启动的事务。检查EJB 3.2 规范的“9.3.3 来自 AroundConstruct、PostConstruct 和 PreDestroy 生命周期回调的异常”部分。

在这种情况下,我应该更喜欢检查的异常而不是未经检查的异常还是这有关系?

@PostConstruct javadoc禁止从带注释的方法体中抛出任何已检查的异常。

于 2018-11-22T21:08:16.557 回答