[英]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.