spring boot2.0+中添加全局异常捕获
Posted rolayblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot2.0+中添加全局异常捕获相关的知识,希望对你有一定的参考价值。
1、添加自定义异常,继承RuntimeException,为什么继承RuntimeException呢?是因为我们的事务在RuntimeException异常下会发生回滚。
1 public class BusinessException extends RuntimeException 2 3 public BusinessException(String code, String msg) 4 this.code = code; 5 this.msg = msg; 6 7 8 private String code; 9 private String msg; 10 11 public String getCode() 12 return code; 13 14 public void setCode(String code) 15 this.code = code; 16 17 18 public String getMsg() 19 return msg; 20 21 22 public void setMsg(String msg) 23 this.msg = msg; 24 25 26
2、添加全局异常捕获,使用@RestControllerAdvice 注解实现
1 public class CustomExtHandler 2 3 private static final Logger LOG = LoggerFactory.getLogger(CustomExtHandler.class); 4 5 6 //捕获全局异常,处理所有不可知的异常 7 @ExceptionHandler(value=Exception.class) 8 Object handleException(Exception e,HttpServletRequest request) 9 LOG.error("url , msg ",request.getRequestURL(), e.getMessage()); 10 Map<String, Object> map = new HashMap<>(); 11 map.put("code", 100); 12 map.put("msg", e.getMessage()); 13 map.put("url", request.getRequestURL()); 14 return map; 15 16 17 /** 18 * 功能描述: 处理自定义异常类 19 * @return 20 * 21 */ 22 @ExceptionHandler(value = BusinessException.class) 23 Object handleMyException(BusinessException e, HttpServletRequest request) 24 //f返回json数据 25 Map<String, Object> map = new HashMap<>(); 26 map.put("code", e.getCode()); 27 map.put("msg", e.getMsg()); 28 map.put("url", request.getRequestURL()); 29 return map; 30
3、使用
1 throw new BusinessException("200","出错了啊!");
以上是关于spring boot2.0+中添加全局异常捕获的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot异常统一处理方法:@ControllerAdvice注解的使用全局异常捕获自定义异常捕获