任何業(yè)務(wù)系統(tǒng)都有可能發(fā)生異常的場景,通過配置全局異常,可以制定統(tǒng)一的異常頁面或者錯(cuò)誤碼,從而提高用戶的體驗(yàn)度。
1 Springboot配置全局異常
- 類添加注解
@ControllerAdvice,如果需要返回json數(shù)據(jù),則?法需要加@ResponseBody
@RestControllerAdvice, 默認(rèn)返回json數(shù)據(jù),?法不需要加@ResponseBody - ?法添加處理器
捕獲全局異常,處理所有不可知的異常
@ExceptionHandler(value=Exception.class)
示例演示:
1.1 創(chuàng)建controller同級包handler
1.2 在handler包下創(chuàng)建異常處理類:CustomExceptionHandler
@RestControllerAdvice # 此注解表明該類為異常處理類
public class CustomExceptionHandler {
@ExceptionHandler(value = Exception.class) # 針對異常的處理方法
RetData handlerException(Exception e, HttpServletRequest request) {
// 定義全局異常標(biāo)識
String errMsgPrefix = "服務(wù)器異常錯(cuò)誤: ";
return RetData.RetError(-2, errMsgPrefix + e.getMessage());
}
}
1.3 編寫測試代碼測試
@RequestMapping("list")
public Object getList() {
Map<String, String> map = new HashMap<>();
int i = 1 / 0; # 制造異常
map.put("1", "jackyan");
map.put("2", "daisy");
return map;
}
1.4 訪問接口結(jié)果輸出:
{
"code": -2,
"data": null,
"message": "服務(wù)器異常錯(cuò)誤: / by zero"
}