spring 或 springboot统一异常处理
https://blog.csdn.net/xzmeasy/article/details/76150370

一,本文介绍spring MVC的自定义异常处理,即在Controller中抛出自定义的异常时,客户端收到更友好的JSON格式的提示。而不是常见的报错页面。

二,场景描述:实现公用API,验证API key的逻辑,放在拦截器中判断(等同于在Controller中)并抛出异常,用户收到类似下图的提示:

其中,Http状态Code也能自由控制。

三,解决方案:

1,在RateLimitInterceptor.Java拦截器中抛出异常:

  1. public class RateLimitInterceptor extends HandlerInterceptorAdapter{
  2. @Autowired private RedisService rs;
  3. /**
  4. * 流量控制检查入口
  5. */
  6. @Override
  7. public boolean preHandle(HttpServletRequest request,
  8. HttpServletResponse response, Object handler) throws RequiredParameterException, SignException, RateLimitException,Exception {
  9. super.preHandle(request, response, handler);
  10. String appKey = request.getParameter("appKey");
  11. //判断appKey是否为空或是否合法
  12. if(appKey == null){
  13. throw new RequiredParameterException("");
  14. }else if(AppKeyUtils.isFormatCorrect(appKey) || !rs.isExist(appKey)){
  15. throw new SignException();
  16. }else {
  17. try {
  18. AppCall appCall = AppCall.create(appKey, AppKeyUtils.getPlanDetails(appKey));
  19. appCall.decrease();
  20. rs.save(appCall);
  21. System.out.println("RateLimitInterceptor pass.");
  22. } catch (RateLimitException e) {
  23. //抛出超限异常
  24. throw new RateLimitException();
  25. }
  26. }
  27. return true;
  28. }
  29. }

spring 或 springboot统一异常处理的更多相关文章

  1. 基于Spring Boot的统一异常处理设计

    基于Spring Boot的统一异常处理设计 作者: Grey 原文地址:https://www.cnblogs.com/greyzeng/p/11733327.html Spring Boot中,支 ...

  2. 基于spring boot的统一异常处理

    一.springboot的默认异常处理 Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容. 例如这里我 ...

  3. Spring Boot实践——统一异常处理

    注解说明 @ControllerAdvice,是Spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强.让我们先看看@ControllerAdvice的实现: /** * Special ...

  4. Spring MVC自定义统一异常处理类,并且在控制台中输出错误日志

    在使用SimpleMappingExceptionResolver实现统一异常处理后(参考Spring MVC的异常统一处理方法), 发现出现异常时,log4j无法在控制台输出错误日志.因此需要自定义 ...

  5. spring boot配置统一异常处理

    基于@ControllerAdvice的统一异常处理 >.这里ServerException是我自定义的异常,和普通Exception分开处理 >.这里的RequestResult是我自定 ...

  6. SpringBoot 统一异常处理

    统一异常处理: @ControllerAdvice public class GlobalExceptionHandler { private Logger logger = LoggerFactor ...

  7. Spring中的统一异常处理方式

    源自:https://segmentfault.com/a/1190000016236188 在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的. 因此, ...

  8. Spring 中的统一异常处理

    在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的.因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码. 不过, ...

  9. SpringBoot统一异常处理后TX-LCN分布式事务无法捕获异常进行回滚

    通常我们使用SpringBoot都会进行统一异常处理,例如写一个BaseController,在BaseController里进行统一异常处理,然后其他的Controller都继承BaseContro ...

随机推荐

  1. HTML容易遗忘内容(三)

  2. git别名

    git config --global alias.lg 'log --oneline --all --graph --decorate'

  3. R中遇到的部分问题

    在Rstdio使用的是3.5.1的64位R版本中遇到问题:The Perl script 'WriteXLS.pl' failed to run successfully. 首先使用 Sys.whic ...

  4. iOS开发debug集锦

    1.添加第三方库时,需要注意使用环境 duplicate symbol _llvm.embedded.module in: /Users/dengw/360Cloud/xcode_code/appli ...

  5. AlphaControls的使用方法

    AlphaControls的使用方法 转载▼   一.安装方法:  1.解压缩下载的文件,并把它放到你希望的位置,例如 D:\Coder\   2.在Delphi的菜单:Tools->Envir ...

  6. win7 64bits下编译libjpeg库

    一.下载源代码.下载地址:http://www.ijg.org/.注意:一定要下载win32 版本二.编译源代码.       1.解压源代码,(不需要修改,修改报错)修改源代码中jconfig.vc ...

  7. Linux系统——rpm命令

    (1)查看操作系统名字.版本cat /etc/redhat-release 查看系统内核kernel的版本号uname -r查看操作系统位数uname -m (2)rpm命令rpm 参数 软件名-q ...

  8. Lua 基础总结

    lua 数组下标从 1 开始, 不是 0 lua 逻辑运算符  与 或 非  就是英文  and  or  not local  局部变量 数据类型:lua是一门动态类型语言,变量没有类型,只有值才有 ...

  9. SQL执行并返回执行前/后结果

    SQLServer: 1.插入数据,并返回插入的数据: INSERT INTO TestTB(Province,City) output inserted.Province, inserted.Cit ...

  10. linux下 安装php的gettext模块

    安装php的模块有两种方式: 一.重新编译php,加上--with-gettext 二.动态安装 现在说下第二个动态安装 1.下载同版本的php原包,解压后进入ext目录,目录下便是模块 2.进入ge ...