1.写一个Exception的配置类,在上面加上@ControllerAdvice注解
2.可以写一个总的异常处理,也可以写单个的异常处理比如你要捕获NullPointerException注解需要写一个方法
@ExceptionHandler(value=NullPointerException.class)
@ResponseBody
public Map getNullPointerException(NullPointerException e , HttpServletRequest request){
Map<String,Object> resultMap = new HashMap<>(0);
resultMap.put("error","空指针异常");
resultMap.put("data",e);
printLog(e,request);
return resultMap ;
}
其他注解一样 比如总异常只需要修改Handler里面的NullPointerException.class 为 Exception.class
3.输出异常了
(1)请求的接口打印
log.error("请求地址"+request.getRequestURI());
(2)参数打印
log.error("========================请求的参数=========================");
Enumeration<String> enumeration = request.getParameterNames();
if (!enumeration.hasMoreElements()){
log.error("无参请求");
}
while (enumeration.hasMoreElements()) {
String name = enumeration.nextElement().toString();
log.error(name + "---" + request.getParameter(name));
}
(3)报错信息打印
log.error("========================报错信息=========================");
StackTraceElement[] error = e.getStackTrace();
for (StackTraceElement stackTraceElement : error) {
log.error(stackTraceElement.toString());
}
小结:我对这个异常的了解是它相当于一个拦截器,在给前端返回数据时进行异常拦截