spring 或 springboot统一异常处理
来源:互联网 发布:01年总决赛科比数据 编辑:程序博客网 时间:2024/06/06 12:52
一,本文介绍spring MVC的自定义异常处理,即在Controller中抛出自定义的异常时,客户端收到更友好的JSON格式的提示。而不是常见的报错页面。
二,场景描述:实现公用API,验证API key的逻辑,放在拦截器中判断(等同于在Controller中)并抛出异常,用户收到类似下图的提示:
其中,Http状态Code也能自由控制。
三,解决方案:
1,在RateLimitInterceptor.Java拦截器中抛出异常:
当代码走到(具体怎样走到,需考虑具体业务逻辑,上述代码使用AppCall类来封装,这是后话)
时,Spring将自动捕获这个异常。然后做一些处理。这是正常的流程。那么Spring如何自动捕获
2,使用Spring MVC的@ControllerAdvice,在GlobalExceptionHandler.java类中实现全局的异常处理类:
在方法的头上注解:
即表示让Spring捕获到所有抛出的SignException异常,并交由这个被注解的方法处理。
注解:
即表示返回的对象,Spring会自动把该对象进行json转化,最后写入到Response中。
注解:
表示设置状态码。如果应用级别的错误,此处其实永远返回200也是可以接受的,但是要在你自定义的异常串和异常码中做好交代。
本文的方案自定义了一个ExceptionResponse.java类,如下:
如你所知,这个类就是最后传到用户面前的一个异常类,code和message根据业务定义并让用户知晓。而自定义的SignException.java实际上起到了一个桥梁的作用。Spring把SignException对象捕获到,转成相应的ExceptionResponse对象,剩下的就是如何优雅实现的问题了。 如下是SignException.java的实现:
所有关于这个异常的code和message都写在这个类里,个人感觉还是可以接受。当然还有另外一种实现,就是只拦截、定义一种Exception类,然后传不同的code和message进去,然后做相应的处理。这些都是比较灵活
阅读全文
0 0
- spring 或 springboot统一异常处理
- SpringBoot--统一异常处理
- SpringBoot-统一异常处理
- springboot统一异常处理
- SpringBoot统一异常处理
- SpringBoot 统一异常处理
- SpringBoot 统一异常处理
- springboot统一异常处理
- springboot统一异常处理机制
- SpringBoot(4) 统一异常处理
- SpringBoot之统一异常处理
- Spring统一异常处理
- Spring > 统一异常处理
- Spring统一异常处理
- spring mvc统一处理异常时候返回json或xml
- SpringBoot 和 SpringMVC的异常统一处理
- SpringBoot 统一异常处理 @ControllerAdvice 失效
- SpringBoot 统一异常处理--- @ControllerAdvice 使用
- 利用Apache commons exec 实现指定应用打开对应文件
- uva 11461
- 线段树区间修改之双标记 【lazy两重标记并且分类讨论】
- 博客开篇随便
- Appium ios新的定位方式FindsByIosNSPredicate
- spring 或 springboot统一异常处理
- IE下预览pdf失败可能及解决方案
- hdu2962 限制最短路+枚举
- 机器学习笔记:kNN算法
- 图像处理基础
- php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
- Spring Cloud构建微服务架构(一)分布式配置中心
- Lucas 定理 大组合数取余 【学习】
- Java中的编码规则