springboot全局异常处理 --- @ControllerAdvice 偏执的太偏执、 2021-11-22 13:50 407阅读 0赞 1、首先我们可以针对自己的业务创建自定义异常,系统层面,业务方面等 我们系统业务层统一使用BizException,这个是自定义的。 2、配置controllerAdvice ![20190724170258697.png][] 下面是代码: @ControllerAdvice @ResponseBody public class ControllerExceptionHandler { /** * 日志调整 */ private static Logger logger = LoggerFactory.getLogger(ControllerExceptionHandler.class); @ExceptionHandler(BizException.class) public Response<T> bizExceptionHandler(BizException ex) { // logger.error("业务异常,异常信息为 {} | {}", ex.getHeader().getError(), ex.getHeader().getMessage()); return Response.getInstance().setHead(ex.getHeader()); } /** * 带有body的异常返回 * @param ex * @return */ @ExceptionHandler(ExpandBizException.class) public Response<T> expandBizException(ExpandBizException ex) { Response response = Response.getInstance(); response.setErrorCode(ex.getError()).setErrorMessage(ex.getMessage()).setBody(ex.getBody()); return response; } /** * 异常处理 * * @param methodArgumentNotValidException 请求参数异常 * @return 响应信息 */ @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseBody public Response methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException methodArgumentNotValidException) { List<String> list = methodArgumentNotValidException.getBindingResult().getAllErrors().stream().map(error -> error.getDefaultMessage()).collect(Collectors.toList()); return Response.getInstance().setErrorCode(-1).setErrorMessage(Joiner.on(";").join(list)); } @ExceptionHandler(RuntimeException.class) public Response<T> runtimeException(RuntimeException ex) { logger.error("系统异常", ex); Header header = Header.builder().error(5001).message(ex.getMessage()).build(); return Response.getInstance().setHead(header); } @ExceptionHandler(IllegalArgumentException.class) public Response<T> runtimeException(IllegalArgumentException ex) { logger.error("系统异常", ex); Header header = Header.builder().error(5001).message(ex.getMessage()).build(); return Response.getInstance().setHead(header); } @ExceptionHandler(NullPointerException.class) public Response<T> otherExceptionHandler(NullPointerException ex) { logger.error("系统异常", ex); StackTraceElement[] els = ex.getStackTrace(); String msg = "系统执行错误:"; if (els != null && els.length > 0) { StackTraceElement row = els[0]; msg += row.getClassName() + " : methodName:" + row.getMethodName() + " -> line number" + row.getLineNumber() + "::"; } msg += ex.getMessage(); Header header = Header.builder().error(5002).message(msg).build(); return Response.getInstance().setHead(header); } @ExceptionHandler(Exception.class) public Response<T> otherExceptionHandler(Exception ex) { logger.error("系统异常", ex); Header header = Header.builder().error(5003).message(ex.getMessage()).build(); return Response.getInstance().setHead(header); } } 其实还是很好理解的,在聚合层的一些系统或者业务异常都在底层统一向上抛,最后在controller层进行拦截与处理。 [https://www.cnblogs.com/goloving/p/9142222.html][https_www.cnblogs.com_goloving_p_9142222.html] 扩展 [20190724170258697.png]: /images/20211122/4f8365afe53d45979f886f4cb5169fe4.png [https_www.cnblogs.com_goloving_p_9142222.html]: https://www.cnblogs.com/goloving/p/9142222.html
相关 springboot webflux 异常处理(@ControllerAdvice) -------------------- sprigboot webflux 异常处理(@ControllerAdvice) \\\\\\\\\\\\\\\\\ 我会带着你远行/ 2023年02月19日 10:27/ 0 赞/ 25 阅读
相关 @ControllerAdvice全局处理异常 @ControllerAdvice,是Spring3.2提供的新注解,它是一个Controller增强器,可对controller中被 @RequestMapping注解的方法 短命女/ 2022年11月13日 00:50/ 0 赞/ 201 阅读
相关 十四、springboot全局处理异常(@ControllerAdvice + @ExceptionHandler) 十四、springboot全局处理异常(@ControllerAdvice + @ExceptionHandler) 参考文章: [(1)十四、springboot全局处理 深藏阁楼爱情的钟/ 2022年09月10日 04:21/ 0 赞/ 220 阅读
相关 Springboot(十一)@ControllerAdvice全局异常处理 前言: @ControllerAdvice,用于全局异常处理,减少代码入侵,必须在controller层抛出来,若异常在代码中被抓住了,没有抛出来,是不起作 短命女/ 2022年05月22日 12:22/ 0 赞/ 254 阅读
相关 @ControllerAdvice 全局异常处理 [ControllerAdvice 文档][ControllerAdvice] 在spring 3.2中,新增了@ControllerAdvice 注解,它通常用于定义 迈不过友情╰/ 2022年04月25日 01:36/ 0 赞/ 268 阅读
相关 springboot全局异常处理实例——@ControllerAdvice+ExceptionHandler 文章目录 一、全局捕获异常后,返回json给浏览器 1、自定义异常类 MyException.java 系统管理员/ 2022年03月15日 04:10/ 0 赞/ 319 阅读
相关 【java异常】 @ControllerAdvice+@ExceptionHandler全局异常处理 查看 @ControllerAdvice源码可见,添加了@Component; 则@ControllerAdvice是spring的一个组件,可理解为一个实体Bean, 叁歲伎倆/ 2021年12月05日 01:13/ 0 赞/ 337 阅读
相关 springboot全局异常处理 --- @ControllerAdvice 1、首先我们可以针对自己的业务创建自定义异常,系统层面,业务方面等 我们系统业务层统一使用BizException,这个是自定义的。 2、配置controllerAd 偏执的太偏执、/ 2021年11月22日 13:50/ 0 赞/ 408 阅读
相关 SpringBoot使用@ControllerAdvice和@ExceptionHandler注解实现全局异常处理 1、使用控制器通知 在编写代码时,需要对异常进行处理。进行异常处理的普通的代码是try...catch结构。但在开发业务时,只想关注业务正常的代码,对于catch语句中的 冷不防/ 2021年08月29日 12:47/ 0 赞/ 468 阅读
还没有评论,来说两句吧...