springboot全局异常处理 --- @ControllerAdvice 偏执的太偏执、 2021-11-22 13:50 446阅读 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
相关 @ControllerAdvice结合@ExceptionHandler全局异常处理 我们可以单独创建一个类,通过使用@ControllerAdvice和@ExceptionHandler一起使用,当所有控制器的方法出现问题,都进入异常处理方法。具体使用如下: 秒速五厘米/ 2023年07月03日 15:26/ 0 赞/ 53 阅读
相关 springboot全局异常的处理@ControllerAdvice和@ExceptionHandler 在项目中,我们经常遇到程序运行异常,也经常根据业务需要自定义异常,springboot给我们提供了一种便利的方式捕获全局异常,解决访问url地址不友好提示的问题。 @ 小咪咪/ 2023年07月01日 09:57/ 0 赞/ 40 阅读
相关 @ControllerAdvice全局处理异常 @ControllerAdvice,是Spring3.2提供的新注解,它是一个Controller增强器,可对controller中被 @RequestMapping注解的方法 短命女/ 2022年11月13日 00:50/ 0 赞/ 239 阅读
相关 十四、springboot全局处理异常(@ControllerAdvice + @ExceptionHandler) 十四、springboot全局处理异常(@ControllerAdvice + @ExceptionHandler) 参考文章: [(1)十四、springboot全局处理 深藏阁楼爱情的钟/ 2022年09月10日 04:21/ 0 赞/ 254 阅读
相关 Springboot(十一)@ControllerAdvice全局异常处理 前言: @ControllerAdvice,用于全局异常处理,减少代码入侵,必须在controller层抛出来,若异常在代码中被抓住了,没有抛出来,是不起作 短命女/ 2022年05月22日 12:22/ 0 赞/ 282 阅读
相关 @ControllerAdvice 全局异常处理 [ControllerAdvice 文档][ControllerAdvice] 在spring 3.2中,新增了@ControllerAdvice 注解,它通常用于定义 迈不过友情╰/ 2022年04月25日 01:36/ 0 赞/ 309 阅读
相关 springboot全局异常处理实例——@ControllerAdvice+ExceptionHandler 文章目录 一、全局捕获异常后,返回json给浏览器 1、自定义异常类 MyException.java 系统管理员/ 2022年03月15日 04:10/ 0 赞/ 352 阅读
相关 【java异常】 @ControllerAdvice+@ExceptionHandler全局异常处理 查看 @ControllerAdvice源码可见,添加了@Component; 则@ControllerAdvice是spring的一个组件,可理解为一个实体Bean, 叁歲伎倆/ 2021年12月05日 01:13/ 0 赞/ 367 阅读
相关 springboot全局异常处理 --- @ControllerAdvice 1、首先我们可以针对自己的业务创建自定义异常,系统层面,业务方面等 我们系统业务层统一使用BizException,这个是自定义的。 2、配置controllerAd 偏执的太偏执、/ 2021年11月22日 13:50/ 0 赞/ 447 阅读
还没有评论,来说两句吧...