gpt4 book ai didi

java - 我应该如何处理 Java Config @Bean 方法中的已检查和未检查异常以显示用户友好的错误原因?

转载 作者:太空宇宙 更新时间:2023-11-04 14:40:29 26 4
gpt4 key购买 nike

我正在开发一个基于 spring-boot 的小型命令行应用程序。主类有一个@Autowired注释的字段@Autowired Repository repository;其构造方法在 Java Config 类中提供,该类具有适当的 @Bean 注释方法 @Bean Repository repository(){...} .

@Bean 注解的方法包含可以抛出已检查和未检查异常的代码。 @Bean Repository repository(){...//exceptions}

我的目标是创建一个用户友好的应用程序,它以适当的日志级别记录简短的消息,而不是长堆栈跟踪。

目前,Java Config @Bean 注释方法中的异常导致应用程序退出并显示 o.s.boot.SpringApplication: Application startup failed消息和很长的堆栈跟踪。

我想知道是否有一个好方法来处理 Java Config @Bean 注释方法中的至少典型异常(我知道),以记录对故障排除有用的用户友好的简短消息。

我假设这样的策略需要向 Java Config 类添加异常处理代码,但我从未在公开的 Java Config 类中看到过这样的代码,这表明在 Java Config 类中添加异常处理代码可能是一种不好的做法。

谢谢。

最佳答案

我认为您在这里有几个选择,哪一个是最好的很大程度上取决于个人喜好和应用程序的结构。

一种选择是在调用 SpringApplication.run() 之前执行所有输入验证。这适用于任何命令行参数,但对于通过 application.properties 配置的任何内容来说充其量都是麻烦的。

您可以捕获异常并进行适当的处​​理,而不是从 @Bean 方法中抛出异常。如果问题较小,您可以记录一条信息或警告消息来解释问题并允许应用程序继续。如果问题是灾难性的,您可以记录一条错误消息,然后调用 System.exit()。虽然这将为调用 @Bean 方法时引发的任何异常提供用户友好的错误报告,但您仍然会留下此后发生的任何异常的堆栈跟踪。

最后,您可以将对 SpringApplication.run() 的调用包装在 try-catch block 中。然后,您可以检查捕获的异常和原因链,以确定要记录的适当错误消息。这种方法的优点是,它可以让您为任何导致 SpringApplication.run() 失败的异常提供用户友好的错误消息,而不仅仅是从您的 内部抛出的异常。 >@Bean 方法。

假设有命令行参数需要验证,我可能会使用第一个和第三个选项的组合。首先,我会使用 CLI 库(例如 JOpt Simple)来使事情变得更简单。

关于java - 我应该如何处理 Java Config @Bean 方法中的已检查和未检查异常以显示用户友好的错误原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25004905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com