如何捕捉spring boot项目的数据库连接异常

发布于 2022-09-06 09:20:30 字数 381 浏览 21 评论 0

1.特地未授权,进行数据库连接,报错如下:java.sql.SQLException: null, message from server: "Host 'MACBOOKPRO-FDAF' is not allowed to connect to this MySQL server"

2.但是会一直尝试连接,application.properites有如下配置,还是一直在尝试连接,整个应用没有运行下去:

spring.datasource.test-on-borrow=false  
spring.datasource.continue-on-error=true

3.请问各路大神,如果捕捉这些异常进行处理,并让程序执行下去???

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怎会甘心 2022-09-13 09:20:30

SpringBoot中一般可以捕获特定的异常,然后做出特定的处理,你可以自己定义一个Handler来处理异常,比如你这里的SQLException,给你贴一段代码你可以参考一下:

**
 * 处理卖家端权限校验异常的类
 *
 * @author lemon
 * @date 2017/12/26 下午5:33
 */
@ControllerAdvice
public class SellerAuthorizeExceptionHandler {

    @Autowired
    private ProjectUrlConfiguration projectUrlConfiguration;

    /**
     * 处理SellerAuthorizeException异常
     *
     * @return ModelAndView对象
     */
    @ExceptionHandler(value = {SellerAuthorizeException.class})
    public ModelAndView handlerSellerAuthorizeException() {
        return new ModelAndView("redirect:"
                .concat(projectUrlConfiguration.getWechatOpenAuthorize())
                .concat("/sell/wechat/qrAuthorize")
                .concat("?returnUrl=")
                .concat(projectUrlConfiguration.getSell())
                .concat("/sell/seller/login"));
    }
}

在这段代码中,我定义了一个Handler来处理SellerAuthorizeException,当抛出这个异常后,就会去跳转到我指定的链接中去。@ControllerAdvice注解就是统一异常处理的注解,@ExceptionHandler注解就是捕获特定的异常,标注在方法上。

蒲公英的约定 2022-09-13 09:20:30

看看@ControllerAdvice的使用

@ControllerAdvice
public class ExceptionHandlingControllerAdvice {

    protected Logger logger;

    public ExceptionHandlingControllerAdvice() {
        logger = LoggerFactory.getLogger(getClass());
    }
    
    /**
     * SQLExceptionについては例外を通知しない
     * 例外が返される
     * @param exception
     * @return
     */
    @ExceptionHandler({ SQLException.class })
    public String databaseError(Exception exception) {
        logger.error("Request raised " + exception.getClass().getSimpleName());
        return "Global_databaseError";
    }
}

参考:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文