在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/云計(jì)算  Java  網(wǎng)絡(luò)安全/ 如何捕捉spring boot項(xiàng)目的數(shù)據(jù)庫連接異常

如何捕捉spring boot項(xiàng)目的數(shù)據(jù)庫連接異常

1.特地未授權(quán),進(jìn)行數(shù)據(jù)庫連接,報(bào)錯如下:java.sql.SQLException: null, message from server: "Host 'MACBOOKPRO-FDAF' is not allowed to connect to this MySQL server"

2.但是會一直嘗試連接,application.properites有如下配置,還是一直在嘗試連接,整個應(yīng)用沒有運(yùn)行下去:

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

3.請問各路大神,如果捕捉這些異常進(jìn)行處理,并讓程序執(zhí)行下去???

回答
編輯回答
心沉

SpringBoot中一般可以捕獲特定的異常,然后做出特定的處理,你可以自己定義一個Handler來處理異常,比如你這里的SQLException,給你貼一段代碼你可以參考一下:

**
 * 處理賣家端權(quán)限校驗(yàn)異常的類
 *
 * @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,當(dāng)拋出這個異常后,就會去跳轉(zhuǎn)到我指定的鏈接中去。@ControllerAdvice注解就是統(tǒng)一異常處理的注解,@ExceptionHandler注解就是捕獲特定的異常,標(biāo)注在方法上。

2017年3月6日 04:55
編輯回答
別逞強(qiáng)

看看@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";
    }
}

參考:

2018年2月22日 00:19