一:说明

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. sublime text3常用的一些快捷键

    --------------------------------下面的内容可以打印出来贴在电脑旁提醒自己-------------------- Ctrl + Shift + D  快速复制当前的一行 ...

  2. div折角~~~

    代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...

  3. Linux文本处理三剑客之grep及正则表达式详解

    Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...

  4. 优化nginx数据包头缓存

    例子:414错误,网址太长. 长网址访问例子: 以下脚本会生成一个长网址并访问,导致414长网址报错. [root@proxy ~]#vim nginx_test.sh #!/bin/bash URL ...

  5. mysql考生号后三位对出密号

    select mihao,substring(t1.kaohao, -3)  from t_zhaosheng_zhiyuan as t1 where substring(t1.kaohao, -3) ...

  6. Python爬虫入门——使用requests爬取python岗位招聘数据

    爬虫目的 使用requests库和BeautifulSoup4库来爬取拉勾网Python相关岗位数据 爬虫工具 使用Requests库发送http请求,然后用BeautifulSoup库解析HTML文 ...

  7. 爬虫 - 请求库之requests

    介绍 使用requests可以模拟浏览器的请求,比起python内置的urllib模块,requests模块的api更加便捷(本质就是封装了urllib3) 注意:requests库发送请求将网页内容 ...

  8. c#语言学习笔记(1)

    环境:VS Express 2013 for Desktop 也可以vs社区版,不过学习的话,Express本版做一些小的上位机工具应该是够用了 学习的网站:https://www.runoob.co ...

  9. GIL锁是什么鬼?

    参考链接: http://cenalulu.github.io/python/gil-in-python/ GIL不是Python特性 GIL是Python解释器(Cpython)时引入的概念,在JP ...

  10. Learning Vector Quantization

    学习矢量量化. k近邻的缺点是你需要维持整个数据集的训练. 学习矢量量化算法(简称LVQ)是一种人工神经网络算法,它允许你选择要挂在多少个训练实例上,并精确地了解这些实例应该是什么样子. LVQ的表示 ...