【问题标题】:@PostConstruct and unchecked Exceptions@PostConstruct 和未经检查的异常
【发布时间】:2019-03-30 08:21:39
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: java jakarta-ee dependency-injection exception-handling java-annotations


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      • 2010-10-03
      • 2010-11-08
      相关资源
      最近更新 更多