任何业务系统都有可能发生异常的场景,通过配置全局异常,可以制定统一的异常页面或者错误码,从而提高用户的体验度。
1 Springboot配置全局异常
- 类添加注解
@ControllerAdvice,如果需要返回json数据,则⽅法需要加@ResponseBody
@RestControllerAdvice, 默认返回json数据,⽅法不需要加@ResponseBody - ⽅法添加处理器
捕获全局异常,处理所有不可知的异常
@ExceptionHandler(value=Exception.class)
示例演示:
1.1 创建controller同级包handler
1.2 在handler包下创建异常处理类:CustomExceptionHandler
@RestControllerAdvice # 此注解表明该类为异常处理类
public class CustomExceptionHandler {
@ExceptionHandler(value = Exception.class) # 针对异常的处理方法
RetData handlerException(Exception e, HttpServletRequest request) {
// 定义全局异常标识
String errMsgPrefix = "服务器异常错误: ";
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 访问接口结果输出:
{
"code": -2,
"data": null,
"message": "服务器异常错误: / by zero"
}