对于与数据库相关的 Spring MVC 项目,我们通常会把 事务 配置在 Service层,当数据库操作失败时让 Service 层抛出运行时异常,Spring 事物管理器就会进行回滚。

如此一来,我们的 Controller 层就不得不进行 try-catch Service 层的异常,否则会返回一些不友好的错误信息到客户端。但是,Controller 层每个方法体都写一些模板化的 try-catch 的代码,很难看也难维护,特别是还需要对 Service 层的不同异常进行不同处理的时候。例如以下 Controller 方法代码(非常难看且冗余):

    @PostMapping("/uppic1")@ResponseBodypublic JsonResponse uppic1(@RequestParam("file1") MultipartFile file1) throws Exception {JsonResponse jr=null;FastDFSClient client = new FastDFSClient(fdfs_client);String extName = file1.getOriginalFilename().substring(file1.getOriginalFilename().lastIndexOf(".")+1);String path = null;try {path = client.uploadFile(file1.getBytes(),extName,null);jr=new JsonResponse(1,"操作成功",file_server+path);} catch (Exception e) {jr=new JsonResponse(0,"操作失败",path);e.printStackTrace();}return jr;}

使用ControllerAdvice :

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)@ResponseBodyJsonResponse handleException(){JsonResponse jr=new JsonResponse(1,"服务器异常!");return jr;}
}

这样所有controller层的异常都会返回这样的提示了。

转载于:https://www.cnblogs.com/jiangwz/p/8589506.html

@ControllerAdvice + @ExceptionHandler 处理 全部Controller层异常相关推荐

  1. Spring - @ControllerAdvice + @ExceptionHandler全局处理Controller层异常(转)

    Spring - @ControllerAdvice + @ExceptionHandler全局处理Controller层异常(转) 参考文章: (1)Spring - @ControllerAdvi ...

  2. 【统一异常处理】@ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常

    1.利用springmvc注解对Controller层异常全局处理 对于与数据库相关的 Spring MVC 项目,我们通常会把 事务 配置在 Service层,当数据库操作失败时让 Service ...

  3. @ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常

    @ControllerAdvice 和 @ExceptionHandler 的区别 ExceptionHandler, 方法注解, 作用于 Controller 级别. ExceptionHandle ...

  4. @ControllerAdvice+@ExceptionHandler处理架构异常捕获

    1.注解引入 1) @ControllerAdvice - 控制器增强 @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) ...

  5. java异常统一处理,Controller层的异常统一处理及返回

    Controller层的异常统一处理及返回 一.为什么要做这件事? 不知道你平时在写Controller层接口的时候,有没有注意过抛出异常该怎么处理,是否第一反应是想着用个try-catch来捕获异常 ...

  6. 微服务架构之全局异常(@ControllerAdvice + @ExceptionHandler)

    微服务架构之全局异常处理 一.定义全局异常处理类(GlobalExceptionHandler) 1.在cloud-common模块中创建全局异常处理类GlobalExceptionHandler 2 ...

  7. Spring中Controller层、Filter层、Interceptor层全局统一异常处理

    Controller层.Filter层.Interceptor层全局统一异常处理 SpringBoot为异常处理提供了很多优秀的方法,但是像我这种新手在处理异常时还是会觉得一头包,终于我痛定思痛,总结 ...

  8. controller层要写什么_别再写满屏的try-catch了,真丑,全局异常处理不会吗?

    本文讲得比较细,所以篇幅较长.请认真读完,希望读完后能对统一异常处理有一个清晰的认识. 背景 软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所 ...

  9. spring aop 记录controller层的入参和出参

    日志的重要性在项目中不言而喻, 但是对controller层的出入参一个一个的添加, 将是一个比较枯燥的事情, 可以考虑使用aop来记录. spring项目中的全局异常处理有两种模式,其一是实现Han ...

最新文章

  1. PKI/CA 技术的介绍
  2. git保留两个repo的commit并进行合并
  3. mysql关于索引的一些零碎知识点(持续更新)
  4. 实习成长:logback收集项目日志,实现日志告警机器人
  5. Atitit vod ver 12 new feature v12 pb2 影吧 视频 电影 点播 播放系统v12新特性
  6. linux退出热键_LINUX常用快捷键
  7. 音频编解码G729 PCM
  8. Virginie Ruiz
  9. #483(div.2) B. Minesweeper
  10. easyui datagrid 可编辑单元格 显示 clear icon 和 放大镜图标
  11. qq邮箱怎么发送html文件在哪里,QQ邮箱怎么发送文件夹
  12. 永恒之塔人最多的服务器,[官方]永恒之塔新增服务器最新列表
  13. Qgis教程07:矢量数据属性编辑
  14. 没那么简单,没那么困难
  15. Nginx配之负载均衡、缓存、黑名单和灰度发布
  16. php while 无限循环,php - 在PAMI中发起呼叫-无限while循环 - 堆栈内存溢出
  17. FTDI的LibMPSSE编译流程
  18. Windows 下 Let's Encrypt申请证书及使用
  19. 南大通用参加1024程序员节 沉淀自主知识产权 共建中国标准
  20. 集十三位资深程序员毕生功力回答:普通程序员如何自学才能进大厂?

热门文章

  1. 推荐一个JavaScript触发器插件,可通过指定频次、指定时间内触发指定的处理函数...
  2. mongodb 创建用户
  3. ios笔记-单例文字代码详解
  4. HTML5与CSS3权威指南.pdf7
  5. Linux 配置本地yum源步骤
  6. linux之strings命令
  7. ORM sqlachemy学习
  8. GD2拖动验证码Thinkphp版
  9. select case when与IF的用法
  10. 从Google搜索联想到了jQuery