版權聲明:本文首發 http://asing1elife.com ,轉載請注明出處。 https://blog.csdn.net/asing1elife/article/details/82711354
SpringBoot實作全局異常捕獲
SpringBoot 對異常可以進行全局捕獲,按照如下操作即可
更多精彩
- 更多技術部落格,請移步 asing1elife’s blog
建立全局異常捕獲器
-
是對@RestControllerAdvice
的加強@RestController
- 該注解是 Spring2.3 之後提供的新功能,主要用于對原生 Controller 做一些低侵入性的增加輔助
- 被該注解标注的類,其中的方法會被應用到
中@RestController
- 作用與
中被标注@RestController
的方法@RequestMapping
-
是自定義錯誤處理器,使用時可以注明具體需要處理的錯誤類型@ExceptionHandler
- 一般需要标注預設異常和自定義異常即可
- 該錯誤捕獲方式是将所有錯誤向上一直抛出至 Spring 容器,由 Spring 自行處理
- 是以如果在之前進行了 try-catch 操作,會導緻 Spring 無法捕獲到該異常
@RestControllerAdvice
public class GlobalExceptionHandler {
public Logger log = LoggerFactory.getLogger(getClass());
@ExceptionHandler(TSharkException.class)
public ResponseData handleTSharkException(TSharkException e) {
log.error(e.getMessage());
ResponseData responseData = new ResponseData();
responseData.setError(e.getMessage());
return responseData;
}
@ExceptionHandler(Exception.class)
public ResponseData handleException(Exception e) {
log.error(e.getMessage());
String exceptionMessage = "";
ResponseData responseData = new ResponseData();
if (e.getMessage().contains("rollback")) {
exceptionMessage = "資料已被關聯或使用,無法删除!";
}
responseData.setError(exceptionMessage);
return responseData;
}
}