Spring-引导:尝试从 @PostConstruct 方法抛出自定义 RunTimeException 失败
Spring-Boot: Trying to throw a custom RunTimeException from @PostConstruct method fails
基本上,我的代码在下面。考虑到这是代码的 "test" 状态。最初的问题是调用 init() 到一个不同的 class 抛出一个已检查的异常。此抛出被 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);
}
}
而且,在创建使用此 class 的 class 时,我得到了一个 "UnsatisfiedDependencyException"。控制台指向抛出新的 MyCustomRuntimeException 的行,但我真的不明白发生了什么。
此外,"MyCustomRuntimeException" 开始时是一个常规异常,但我看到 I should throw a RunTimeException instead because the @PostConstruct forbids checked exceptions to be thrown。而且我还尝试抛出一个标准的 RunTimeException,但没有成功。
所以,我在这里一无所知。关于为什么我不能抛出这个异常有什么想法吗?
需要正确创建上下文中的每个 bean。当发生错误时,bean 的创建将 stop/fail 并且上下文(或者换句话说,您的应用程序)将不会启动。
你得到一个 UnsatisfiedDependencyException
是因为 ClassName
bean 是因为另一个 bean 需要它而创建的。在构造 ClassName
之后,它将调用 ClassName
bean 的 @PostConstruct
,但由于异常而失败。因此实例不会被创建,因此 UnsatisfiedDependencyException
.
UnsatisfiedDependencyException
的根本原因是您自己的初始化方法抛出的异常。
基本上,我的代码在下面。考虑到这是代码的 "test" 状态。最初的问题是调用 init() 到一个不同的 class 抛出一个已检查的异常。此抛出被 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);
}
}
而且,在创建使用此 class 的 class 时,我得到了一个 "UnsatisfiedDependencyException"。控制台指向抛出新的 MyCustomRuntimeException 的行,但我真的不明白发生了什么。
此外,"MyCustomRuntimeException" 开始时是一个常规异常,但我看到 I should throw a RunTimeException instead because the @PostConstruct forbids checked exceptions to be thrown。而且我还尝试抛出一个标准的 RunTimeException,但没有成功。
所以,我在这里一无所知。关于为什么我不能抛出这个异常有什么想法吗?
需要正确创建上下文中的每个 bean。当发生错误时,bean 的创建将 stop/fail 并且上下文(或者换句话说,您的应用程序)将不会启动。
你得到一个 UnsatisfiedDependencyException
是因为 ClassName
bean 是因为另一个 bean 需要它而创建的。在构造 ClassName
之后,它将调用 ClassName
bean 的 @PostConstruct
,但由于异常而失败。因此实例不会被创建,因此 UnsatisfiedDependencyException
.
UnsatisfiedDependencyException
的根本原因是您自己的初始化方法抛出的异常。