一:说明

1.说明

  这个注解是用于写一个异常捕获的处理类。

  这里介绍全局捕获异常,自定义异常捕获

2.ps

  在这里,顺便写一下基础的自定义异常类,以后方便用于业务异常继承

二:全局异常捕获

1.处理类

package com.jun.web.exception;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody; import java.util.HashMap;
import java.util.Map; @ControllerAdvice
@ResponseBody
public class GlobalExceptionAdviceHandle {
/**
* 全局异常捕获
* @param ex
* @return
*/
@ExceptionHandler(value = Exception.class)
public Map<String, Object> errorHandle(Exception ex){
Map<String, Object> map = new HashMap<>();
map.put("code","-1");
map.put("msg", ex.getMessage());
return map;
} }

2.controller控制类

package com.jun.web.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; /**
* 验证异常捕获注解
*/
@RestController
public class MakeErrorController {
@GetMapping("/global")
public String calc(){
int num=3/0;
return "success";
}
}

3.访问

  

三:自定义异常

1.异常基础类

 package com.jun.web.exception;

 import lombok.Data;

 /**
* 基础异常类
*/
@Data
public class BaseException extends RuntimeException{
//异常码
private String code;
private String msg;
BaseException(){}
public BaseException(String code, String msg){
this.code=code;
this.msg=msg;
}
}

2.自定义异常处理类

 package com.jun.web.exception;

 import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody; import java.util.HashMap;
import java.util.Map; @ControllerAdvice
@ResponseBody
public class GlobalExceptionAdviceHandle {
/**
* 全局异常捕获
* @param ex
* @return
*/
@ExceptionHandler(value = Exception.class)
public Map<String, Object> errorHandle(Exception ex){
Map<String, Object> map = new HashMap<>();
map.put("code","-1");
map.put("msg", ex.getMessage());
return map;
} /**
* 针对BaseException的异常捕获
* @param ex
* @return
*/
@ExceptionHandler(value = BaseException.class)
public Map<String, Object> errorHandle(BaseException ex){
Map<String, Object> map = new HashMap<>();
map.put("code",ex.getCode());
map.put("msg", ex.getMsg());
return map;
}
}

3.测试

package com.jun.web.controller;

import com.jun.web.exception.BaseException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; /**
* 验证异常捕获注解
*/
@RestController
public class MakeErrorController {
@GetMapping("/global")
public String calc(){
int num=3/0;
return "success";
} @GetMapping("/global/err")
public String throwErr(){
throw new BaseException("20000","普通的错误");
}
}

4.结果

  

010 @ControllerAdvice的更多相关文章

  1. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...

  2. spring mvc统一异常处理(@ControllerAdvice + @ExceptionHandler)

    spring 封装了非常强大的异常处理机制.本文选取@ControllerAdvice + @ExceptionHandler 这种零配置(全注解),作为异常处理解决方案! @ControllerAd ...

  3. spring mvc异常统一处理(ControllerAdvice注解)

    首先我的项目是一个为移动端提供的json数据的,当后台报错时如果为移动端返回一个错误页面显得非常不友好,于是通过ControllerAdvice注解返回json数据. 首先创建一个异常处理类: pac ...

  4. 数据终端设备与无线通信模块之间串行通信链路复用协议(TS27.010)在嵌入式系统上的开发【转】

    转自:http://blog.csdn.net/hellolwl/article/details/6164449 目录(?)[-] 协议介绍 模块协议介绍 1            命令包格式 2   ...

  5. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数010,obj,对象管理

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数010,obj,对象管理 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...

  6. spring之ControllerAdvice注解

    @ControllerAdvice是Spring 3.2新增的注解,主要是用来Controller的一些公共的需求的低侵入性增强提供辅助,作用于@RequestMapping标注的方法上. Contr ...

  7. @ControllerAdvice

    @ControllerAdvice,是spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强.让我们先看看@ControllerAdvice的实现: @Target(ElementTyp ...

  8. php大力力 [010节]PHP常量

    2015-08-23 php大力力010. PHP常量 php大力力 [010节]PHP常量 设置 PHP 常量 如需设置常量,请使用 define() 函数 - 它使用三个参数: 首个参数定义常量的 ...

  9. [反汇编练习] 160个CrackMe之010

    [反汇编练习] 160个CrackMe之010. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

随机推荐

  1. idea上maven打包

    首先要实现maven打包,pom需要引入依赖 pom.xml <project> <dependencies> …… </dependencies> <bui ...

  2. 【hadoop】hadoop3.2.0应用环境搭建与使用指南

    下面列出我搭建hadoop应用环境的文章整理在一起,不定期更新,供大家参考,互相学习!!! 杂谈篇: [英语学习]Re-pick up English for learning big data (n ...

  3. React: 无状态组件生成真实DOM结点

    在上一篇文章中,我们总结并模拟了 JSX 生成真实 DOM 结点的过程,今天接着来介绍一下无状态组件的生成过程. 先以下面一段简单的代码举例: const Greeting = function ({ ...

  4. mybatis批量更新报错 org.mybatis.spring.MyBatisSystemException

    具体报错信息: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.Bin ...

  5. C++的struct可以使用template

    C++里面的struct是可以使用template的,然而http://c.biancheng.net/view/2235.html这里竟然说不能用.辣鸡啊. #include <stdio.h ...

  6. glfw之hello world

    mac上用cocoa做imshow,资料似乎不好找,即便找到也需要和OC混编,而不是纯C.这不够纯粹.考虑用opengl做通用的.跨平台的imshow.先入门一下opengl,从glfw官方例子入手. ...

  7. JanusGraph多图配置 (cassandra)

    JanusGraph多图配置目的 :一个端口开启后可根据句柄操作多个图 .(cassandra存储后端) 1.GremlinServer多图配置 服务器gremlin-server.yaml中可以设置 ...

  8. ArcGIS pro 发布地图服务(一)动态地图服务

    1.软件:arcgis pro 2.4  数据:.mxd文档. 2.导入mxd文档. 3.登录portal账号 4.分析—发布 5.在server中的地图服务 JavaScript api 查看 6. ...

  9. Codeforces_Round_547 (Div. 3)题解

    题目链接 传送门 A题 题目 题意 给你两个正整数\(n\)和\(m\),然后你可以进行无数次操作(每次操作可以将\(n\)扩大两倍,或者扩大三倍),问你是否能够得到\(m\). 代码实现如下 n, ...

  10. fastjson异常(字符串集合转成字符串数组)

    我是在项目中,因为受到一个string类型的list集合,然后需要把这个字符串发送给前端,进行解析. 但是前端收到的是一个字符串,不能进行解析. 所以采用 ArrayUtils.clone(JSONO ...