@PostConstruct和已检查的异常
2022-09-01 03:12:13
在@PostConstruct文档中,它谈到了带注释的方法:
“该方法不得引发已检查的异常。
如何处理例如可以在这种方法中抛出的IOException?只需将其包装在运行时异常中,让用户担心对象的错误初始状态?还是@PostConstruct错误的地方来验证和初始化注入其依赖项的对象?
在@PostConstruct文档中,它谈到了带注释的方法:
“该方法不得引发已检查的异常。
如何处理例如可以在这种方法中抛出的IOException?只需将其包装在运行时异常中,让用户担心对象的错误初始状态?还是@PostConstruct错误的地方来验证和初始化注入其依赖项的对象?
是的,将其包装在运行时异常中。更喜欢更具体的东西,比如.IllegalStateException
请注意,如果 init 方法失败,通常应用程序不会启动。
通常,如果您希望或期望在其中一个bean引发异常时应用程序启动失败,则可以使用龙目岛的.@SneakyThrows
如果使用得当,它是非常有用和简洁的:
@SneakyThrows
@PostConstruct
public void init() {
// I usually throw a checked exception
}
最近有一篇文章在这里讨论了它的优缺点:更喜欢龙目岛@SneakyThrows,而不是将检查的异常作为运行时异常重新抛出
享受!