spring boot 異常統一處理

 spring boot 異常統一處理

 使用@ControllerAdvice註解,全局捕獲異常類,只要作用在@RequestMapping上,所有的異常都會被捕獲

@ControllerAdvice
public class ExceptionHandlerAdvise {

    private Logger logger = LoggerFactory.getLogger(ExceptionHandlerAdvise.class);

    @ExceptionHandler
    @Order(Ordered.LOWEST_PRECEDENCE)
    public ResponseEntity<RespDTO> handleException(Exception e) {

        logger.error("global error occur", e);
        //是否自定義異常類型
        if (e instanceof ServiceException){
            return new ResponseEntity<RespDTO>(RespDTO.fail(((ServiceException) e).getErrorMessage()), HttpStatus.OK);
        } else if(e instanceof MethodArgumentNotValidException){  //是否lombok 註解校驗異常
            List<String> errMsgs = new ArrayList<>();
            for(FieldError error : ((MethodArgumentNotValidException) e).getBindingResult().getFieldErrors())errMsgs.add(error.getDefaultMessage());
            return new ResponseEntity<RespDTO>(RespDTO.fail(StringUtils.join(errMsgs)), HttpStatus.OK);
        } else{    //統一處理的異常
            return new ResponseEntity<RespDTO>(RespDTO.fail("操作失敗"), HttpStatus.OK);
        }
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章