controller错误统一处理--------@ExceptionHandler

@RequestBody@ResponseBody,不费吹灰之力就解决了JSon自动绑定。接着就发现,如果遇到RuntimeException,需要给出一个默认返回JSON

三种方式:

1.当这个Controller中任何一个方法发生异常,一定会被这个方法拦截到。然后,输出日志。封装Map并返回,页面上得到status为false。就这么简单。

代码如下

 1 @Controller
 2 public class AccessController {
 3
 4     /**
 5      * 异常页面控制
 6      *
 7      * @param runtimeException
 8      * @return
 9      */
10     @ExceptionHandler(RuntimeException.class)
11     public @ResponseBody
12     Map<String,Object> runtimeExceptionHandler(RuntimeException runtimeException) {
13         logger.error(runtimeException.getLocalizedMessage());
14
15         Map model = new TreeMap();
16         model.put("status", false);
17         return model;
18     }
19
20 } 

2.返回到错误界面

代码如下

 1     @Controller
 2     public class AccessController {
 3         /**
 4          * 异常页面控制
 5          *
 6          * @param runtimeException
 7          * @return
 8          */
 9         @ExceptionHandler(RuntimeException.class)
10         public String runtimeExceptionHandler(RuntimeException runtimeException,
11                 ModelMap modelMap) {
12             logger.error(runtimeException.getLocalizedMessage());
13
14             modelMap.put("status", IntegralConstant.FAIL_STATUS);
15             return "exception";
16         }
17     }  

3.使用 @ControllerAdvice,不用任何的配置,只要把这个类放在项目中,Spring能扫描到的地方。就可以实现全局异常的回调。

代码如下

    @ControllerAdvice  public class SpringExceptionHandler{  /** * 全局处理Exception * 错误的情况下返回500 * @param ex * @param req * @return */  @ExceptionHandler(value = {Exception.class})  public ResponseEntity<Object> handleOtherExceptions(final Exception ex, final WebRequest req) {  TResult tResult = new TResult();  tResult.setStatus(CodeType.V_500);  tResult.setErrorMessage(ex.getMessage());  return new ResponseEntity<Object>(tResult,HttpStatus.OK);  }  }  

controller错误统一处理--------@ExceptionHandler相关推荐

  1. Express接口综合案例(创建项目、配置常用中间件、路由设计、提取控制器模块、配置错误统一处理中间件、用户注册的数据验证,密码加密)

    一.创建项目 二.目录结构 三.配置常用中间件 3.1 解析请求体 express.json() express.urlencoded() 3.2 日志输出 morgan() 3.3 为客户端提供跨域 ...

  2. axios的响应拦截器 - 错误统一处理 / 获取数据繁琐

    1. 问题 登录时,填写错误的用户名密码,没有错误提示(没有进入catch分支) 获取ajax的返回结果比较麻烦:res.data.data.xxxx 2.解决登录失败不报错的问题 2.1 分析原因 ...

  3. Java:SpringBoot给Controller添加统一路由前缀

    网上的文章五花八门,不写SpringBoot的版本号,导致代码拿来主义不好使了. 本文采用的版本 SpringBoot 2.7.7 Java 1.8 目录 1.默认访问路径 2.整个项目增加路由前缀 ...

  4. java中飞飞检查异常_Springboot项目如何在controller层统一返回数据以及处理异常

    在开发项目中,对于controller返回数据同时返回可能大家都能够做到.也就是定义一个相应类,里面有code, msg,content(或data). 在此基础上可能还会再封装以下,搞个基础cont ...

  5. PHP笔记-所有错误统一输出404页面(详细错误日志输出,提高安全性)

    这里我用的是自定义MVC,所以统一错误页面很简单,自定义MVC框架在这篇博文 PHP笔记-自定义MVC框架_IT1995的博客-CSDN博客 当输入任意不存在的页面时: 这里在 private sta ...

  6. Spring Boot笔记-404错误统一管理

    这里有一点要注意: spring boot错误的页面都会到error的请求中,所以可以用如下的方式统一管理 package com.xxxxx.apc.controller;import com.ap ...

  7. php 设置统一处理错误,统一的PHP错误处理理论

    我建议去"异常"的方式. 当有用户错误时抛出异常,您可以将php错误转换为异常,如下所示: function exception_error_handler($errno, $er ...

  8. JSP Servlet | 错误统一处理

    对404错误和500错误处理: 在WebContent文件下新建404.jsp 和 500.jsp 显示错误时弹出的信息 <%@ page language="java" c ...

  9. EasyUI技巧——DataGrid组件的错误统一处理

    1. 前提 最近接到的一个需求是登录并发人数控制--也就是对于同一个帐号,每次只能有最多X个人数同时在线.关于这个,开涛在其Shiro系列博客已经有过详尽的叙述,而正巧我们这个项目也是使用的Shiro ...

最新文章

  1. linux下Tomcat+OpenSSL配置单向双向认证(自制证书)
  2. Oracle 10g(10.2.0.4)升级到10.2.0.5.19
  3. 蓝牙通话之HFP协议
  4. RealSync异构热容灾解决方案
  5. 使用grep 在源码文件查找特定字符串
  6. Atom 编辑器实时预览 HTML 页面
  7. 在国外读phd 的时候和supervisor沟通的时候需要注意的点
  8. 螺钉装弹垫平垫机器人_一种批量组装螺钉、弹垫、平垫的工装及使用方法_2
  9. 学业水平考试b能上985吗_211 和985 的大学是不是要求学业水平考试全部是A
  10. XGBoost使用教程(与sklearn一起使用)二
  11. 一天学完spark的Scala基础语法教程二、运算符与分支语句(idea版本)
  12. [XSY4197] Snow(树形DP)
  13. 如何理解typedef void
  14. 随想录(科技企业中股票和融资)
  15. 滴滴否认上海团队解散;雄安超前布局 5G;小米拆分独立品牌 | 极客头条
  16. Toml :设置策略配置文件
  17. TDH 更新Inceptor UDF步骤
  18. 中职计算机PPT触发器使用的教案,PPT 触发器微课教学设计
  19. 整理的Android资源代码 源码 整理 Github开源项目下载地址
  20. c语言 实现音乐旋律播放

热门文章

  1. iOS中进行数据压缩
  2. Ubuntu 中文版设置方法
  3. 玩转树莓派三、树莓派安装GPIO库接口wiringpi
  4. 【详细】【转】C#中理解委托和事件 事件的本质其实就是委托 RabbitMQ英汉互翼(一),RabbitMQ, RabbitMQ教程, RabbitMQ入门...
  5. Flutter TextField 交互实例 —— 新手礼包
  6. oracle1000问(一)
  7. 导入matlab某两列数据,将文本文件中的数据导入到matlab中一例(wwh)
  8. 一张图了解app测试点:专项测试
  9. prototpe ajax Form serialize()
  10. Computex 2017:浦科特发布M9Pe硬盘,64层堆栈3D NAND闪存