@PostConstruct和已检查的异常

@PostConstruct文档中,它谈到了带注释的方法:

“该方法不得引发已检查的异常。

如何处理例如可以在这种方法中抛出的IOException?只需将其包装在运行时异常中,让用户担心对象的错误初始状态?还是@PostConstruct错误的地方来验证和初始化注入其依赖项的对象?


答案 1

是的,将其包装在运行时异常中。更喜欢更具体的东西,比如.IllegalStateException

请注意,如果 init 方法失败,通常应用程序不会启动。


答案 2

通常,如果您希望或期望在其中一个bean引发异常时应用程序启动失败,则可以使用龙目岛的.@SneakyThrows

如果使用得当,它是非常有用和简洁的:

@SneakyThrows
@PostConstruct
public void init() {
    // I usually throw a checked exception
}

最近有一篇文章在这里讨论了它的优缺点:更喜欢龙目岛@SneakyThrows,而不是将检查的异常作为运行时异常重新抛出

享受!


推荐