如何在SpringBoot中统一处理逻辑异常

  介绍

本篇文章为大家展示了如何在SpringBoot中统一处理逻辑异常,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强>构建项目

我们将逻辑异常核心处理部分提取出来作为单独的jar供其他模块引用,创建项目在父项目砰的一声。xml添加公共使用的依赖,配置内容如下所示:

& lt; dependencies>   ,,,& lt; !——Lombok祝辞   ,,,& lt; dependency>   ,,,,,& lt; groupId> org.projectlombok   ,,,,,& lt; artifactId> lombok   ,,,,,& lt; optional> true   ,,,& lt;/dependency>   ,,,& lt; !——测试模块依赖——比;   ,,,& lt; dependency>   ,,,,,& lt; groupId> org.springframework.boot   ,,,,,& lt; artifactId> spring-boot-starter-test   ,,,,,& lt; scope> test   ,,,& lt;/dependency>   ,,,& lt; !——web依赖——比;   ,,,& lt; dependency>   ,,,,,& lt; groupId> org.springframework.boot   ,,,,,& lt; artifactId> spring-boot-starter-web   ,,,& lt;/dependency>   & lt;/dependencies>

项目创建完成后除了.idea,安恩科技,砰的一声。xml保留,其他的都删除。

<强>异常处理核心子模块

/* *   ,* @author 水气比   ,* @create  2019/9/7 ——15:06   ,*/public  class  OssException  extends  RuntimeException  implements  Serializable  {   private 才能static  final  long  serialVersionUID =, 1 l;   private 才能;对象[],errFormatArr;   public 才能OssException (String 消息,对象…,obj), {   ,,,超级(消息);   ,,,this.errFormatArr =, obj;   ,,}//由才能于实际需要,因此又追加以下两种构造方法   public 才能;OssException (String 消息,Throwable 原因),{   ,,,超级(消息,引起);   ,,}   public 才能;OssException (Throwable 原因),{   ,,,超级(原因);   ,,}   public 才能;对象[],getErrFormatArr (), {   ,,,return  errFormatArr;   ,,}   public 才能;void  setErrFormatArr (Object [], errFormatArr), {   ,,,this.errFormatArr =, errFormatArr;   ,,}   }

<强>统一返回结果定义

@Slf4j   @ControllerAdvice   public  class  OssExceptionHandler  {      @ExceptionHandler才能(value =, Exception.class)   @ResponseBody才能   public 才能;ModelAndView 处理(Exception 交货),{   ,,,//使用FastJson提供的FastJsonJsonView视图返回,不需要捕获异常   ,,,FastJsonJsonView  view =, new  FastJsonJsonView ();      ,,,R  result =,空;   ,,,if  (ex  instanceof  OssException),{//自义异常   ,,,,,result =, M.getErrR (ex.getMessage (), ((OssException),前女友).getErrFormatArr ());   ,,,}else 如果(ex  instanceof  MaxUploadSizeExceededException),{//春天的文件上传大小异常   ,,,,,result =, M.getErrR (“exception.maxUploadSizeExceededException", PropUtil.getInteger (“upload.maxSize"));   ,,,}else 如果(ex  instanceof  DataAccessException),{//春天的JDBC异常   ,,,,,result =, M.getErrR (“exception.dataAccessException");   ,,,}else {//其他未知异常   ,,,,,result =, M.keyErrR (“exception.other");   ,,,}      ,,,//开发过程中打印一下异常信息,生产过程可关闭   ,,,如果(result.getErrCode(), !=, 60113),{,//20181225登陆会话失效,不打印了   ,,,,,String  stackTrace =, StackUtil.getStackTrace (ex);   ,,,,,log.error(“- - - - -→“+加亮);   ,,,}         ,,,//电脑,端封装异常信息,20181128,安全测试问题要求关闭详细异常信息   ,,,//如果(WebUtil.isComputer ()), result.setErrdetail(加);   ,,,result.setErrdetail (ex.getMessage());,//20190128,异常信息简易的还需加入   ,,,view.setAttributesMap(结果);      ,,,return  new  ModelAndView(查看);   ,,}   } springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新弹簧应用的初始搭建以及开发过程,springboot也是一个服务于框架的框架,服务范围是简化配置文件。

上述内容就是如何在springboot中统一处理逻辑异常,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

如何在SpringBoot中统一处理逻辑异常