@PostConstruct&Checked例外

fas*_*seg 32 java exception-handling java-ee postconstruct

@PostConstruct文档中,它描述了带注释的方法:

"该方法绝不能抛出已检查的异常."

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

Boz*_*zho 40

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

请注意,如果init方法失败,通常应用程序将无法启动.


wil*_*ing 5

一般来说,如果您希望或预期当您的某个 Bean 抛出异常时应用程序启动失败,您可以使用 Lombok 的@SneakyThrows.

\n\n

如果使用得当,它会非常有用且简洁:

\n\n
@SneakyThrows\n@PostConstruct\npublic void init() {\n    // I usually throw a checked exception\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

最近有一篇文章讨论了它的优点和缺点:Prefer Lombok\xe2\x80\x99s @SneakyThrows to rethrowing CheckedExceptions as RuntimeExceptions

\n\n

享受!

\n