接上文SpringMVC系列:DispatcherServlet的小秘密
解决问题
本次主要处理后端服务器报错时,错误信息泄露到前端问题,以及影响用户体验,对此进行异常处理。
ControllerAdvice
通过注解方式实现,需要配置再注解扫码路基内
加载入口
//处理器异常解析器
DispatcherServlet#onRefresh-->
DispatcherServlet#initStrategies-->
DispatcherServlet#initHandlerExceptionResolvers
//定义处理方式
@ControllerAdvice
public class ExceptionCatch {
@ExceptionHandler(Exception.class)
@ResponseBody
public String exception(Exception e) {
Map<String, Object> result = new HashMap<>();
result.put(RequestConstant.API_STATUE, RequestConstant.ERRORO);
result.put(RequestConstant.API_MESSAGE, e.getMessage());
return JSON.toJSONString(result);
}
}
异常捕获处理
DispatcherServlet#doDispatch
执行异常处理业务
按照顺序进行处理,只要不返回空则直接跳过后续异常处理机制。
HandlerExceptionResolver
需xml配置bean