010 @ControllerAdvice
一:说明
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的更多相关文章
- 51nod 算法马拉松18 B 非010串 矩阵快速幂
非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...
- spring mvc统一异常处理(@ControllerAdvice + @ExceptionHandler)
spring 封装了非常强大的异常处理机制.本文选取@ControllerAdvice + @ExceptionHandler 这种零配置(全注解),作为异常处理解决方案! @ControllerAd ...
- spring mvc异常统一处理(ControllerAdvice注解)
首先我的项目是一个为移动端提供的json数据的,当后台报错时如果为移动端返回一个错误页面显得非常不友好,于是通过ControllerAdvice注解返回json数据. 首先创建一个异常处理类: pac ...
- 数据终端设备与无线通信模块之间串行通信链路复用协议(TS27.010)在嵌入式系统上的开发【转】
转自:http://blog.csdn.net/hellolwl/article/details/6164449 目录(?)[-] 协议介绍 模块协议介绍 1 命令包格式 2 ...
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数010,obj,对象管理
<zw版·Halcon-delphi系列原创教程> Halcon分类函数010,obj,对象管理 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...
- spring之ControllerAdvice注解
@ControllerAdvice是Spring 3.2新增的注解,主要是用来Controller的一些公共的需求的低侵入性增强提供辅助,作用于@RequestMapping标注的方法上. Contr ...
- @ControllerAdvice
@ControllerAdvice,是spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强.让我们先看看@ControllerAdvice的实现: @Target(ElementTyp ...
- php大力力 [010节]PHP常量
2015-08-23 php大力力010. PHP常量 php大力力 [010节]PHP常量 设置 PHP 常量 如需设置常量,请使用 define() 函数 - 它使用三个参数: 首个参数定义常量的 ...
- [反汇编练习] 160个CrackMe之010
[反汇编练习] 160个CrackMe之010. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...
随机推荐
- Mysql 常见数据类型及约束
Mysql 常见数据类型及约束 最近在跟几个不太懂技术的同事(哈哈, 其实我也不懂), 要整一个数据库项目, 然后前端, 后端, 都没有像样的, 数据输出还不是由我们控制.... 这可难受了, 然后总 ...
- SpringBoot2.x服务器端主动推送技术
一.服务端推送常用技术介绍 服务端主流推送技术:websocket.SSE等 1.客户端轮询:ajax定时拉取后台数据 js setInterval定时函数 + ajax异步加载 定时向服务 ...
- 【Docker】docker安装GitLab
一.下载镜像 docker pull gitlab/gitlab-ce 二.运行GitLab容器 1.生成启动文件 - start.sh 使用docker命令运行容器,注意修改hostname为自己喜 ...
- rsa公钥和私钥到底哪个才是用来加密,哪个用来解密?
本文转自:91博客:原文地址:http://www.9191boke.com/138589019.html 公钥和私钥在一些银行系统.第三方支付系统SDK中经常会遇到,刚接触公钥私钥的朋友们估计很难区 ...
- ITIL 4Foundation认证
2019年5月参加了ITIL 4Foundation培训和认证.最新的ITIL4版本中,结合了Lean.Agile和DevOps的思想.经过学习后,在思想上有很大的收货. 在此记录自己的成长.
- 解决windows下合上、掀开笔记本盖子后屏幕黑屏的问题
我在macbook上安装了windows10,但是由于驱动问题,虽然我设置的是关闭盖子仅息屏,但是在关闭盖子后一段时间,再掀开,屏幕就怎么样都唤不醒了. 我找到一个方法,虽然治标不治本,但是起码能解决 ...
- 哈希长度拓展攻击之De1CTF - SSRF Me
题目考查:python代码审计.hash长度拓展攻击 0x01 题目源码: #! /usr/bin/env python #encoding=utf-8 from flask import Flask ...
- Python开发应用之-SQL 建索引的几大原则
SQL 建索引的几大原则: 最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>.<.between.like)就停止匹配,比如a = 1 and b = ...
- BZOJ3028 食物 和 LOJ6261 一个人的高三楼
总结一下广义二项式定理. 食物 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数 ...
- spark的scala:wordCount解析