介绍
本篇文章为大家展示了如何在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中统一处理逻辑异常,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。