统一异常拦截处理方式
项目中不可避免会出现一些异常情况,而一个web项目,若不拦截异常,糟糕的情况下可能直接将堆栈抛给前端,从而导致各种鬼畜的问题
I. 借助@ControllerAdvice
拦截异常
给一个简单的demo,便可以很容易的了解这种手段如何处理了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| @ControllerAdvice @Slf4j @ResponseBody public class ActionExceptionHandler {
@ExceptionHandler(value = Exception.class) public String defaultHandler(HttpServletRequest request, Exception e) { log.error("unexpected exception! request: {}, params: {} refer: {}, e: {}", request.getRequestURI(), request.getParameterMap(), request.getHeader("referer"), e);
if (StringUtils.isBlank(e.getMessage())) { return ResponseWrapper.errorReturn(new Status(500, "内部异常")); } else { return ResponseWrapper.errorReturn(new Status(500, e.getMessage())); } } }
|
这里主要借助两个注解来实现,ControllerAdvice 和 ExceptionHandler
II. 其他
声明
尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见解不全,如有问题,欢迎批评指正
扫描关注,java分享