繁体   English   中英

Spring-Boot:尝试从@PostConstruct 方法抛出自定义 RunTimeException 失败

[英]Spring-Boot: Trying to throw a custom RunTimeException from @PostConstruct method fails

基本上,我的代码在下面。 考虑到这是代码的“测试”状态。 最初的问题是调用 init() 到另一个抛出已检查异常的类。 此抛出被 try/catch 块捕获,然后应用程序在尝试创建异常时失败。 为了清楚起见,所有这些都已删除,因为问题出在“MyCustomRuntimeException”创建中。

@Component
public class ClassName {

  public ClassName() {
    //minor, non problematic operations.
  }

  @PostConstruct
  public void init() {
    throw new MyCustomRuntimeException("AAAAAAAH");
  }

}

MyCustomRuntimeException 定义如下:

public class MyCustomRuntimeException extends RuntimeException {

  public MyCustomRuntimeException (String message) {
    super(message);
  }
}

而且,在创建使用此类的类时,我收到了“UnsatisfiedDependencyException”。 控制台指向抛出新的 MyCustomRuntimeException 的那一行,我真的不明白发生了什么。

此外,“MyCustomRuntimeException”开始作为一个常规异常,但我看到我应该抛出一个 RunTimeException 因为@PostConstruct 禁止抛出已检查的异常 而且我还尝试在没有运气的情况下抛出标准的 RunTimeException。

所以,我在这里一无所知。 关于为什么我不能抛出这个异常的任何想法?

上下文中的每个 bean 都需要正确创建。 当发生错误时,bean 的创建将停止/失败并且上下文(或换句话说您的应用程序)将不会启动。

您会收到UnsatisfiedDependencyException因为ClassName bean 是因为另一个 bean 需要它而创建的。 在构造ClassName ,它将调用ClassName bean 的@PostConstruct ,并且由于异常而失败。 因此不会创建实例,因此会出现UnsatisfiedDependencyException

UnsatisfiedDependencyException的根本原因将是您自己的初始化方法抛出的异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM