spring boot配置统一异常处理
基于@ControllerAdvice的统一异常处理
>.这里ServerException是我自定义的异常,和普通Exception分开处理
>.这里的RequestResult是我自定义的请求返回结果对象
ExceptionResolver.class
import com.dawn.blogspot.common.exception.ServerException;
import com.dawn.blogspot.common.response.RequestResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody; /**
* @author TangZedong
* @apiNote 统一异常处理器
* @since 2018/5/21 11:55
*/
@ControllerAdvice
public class ExceptionResolver {
// spring boot 2.0.4版本内部集成了log4j,所以不需要额外的配置log4j
private final static Logger LOGGER = LoggerFactory.getLogger(ExceptionResolver.class); /**
* 处理自定义异常{@link ServerException},并返回错误信息
*/
@ResponseBody
@ExceptionHandler(value = ServerException.class)
public RequestResult ServerException(ServerException e) {
return RequestResult.getFailedInstance(e.getCode(), e.getMessage() == null ? "系统异常" : e.getMessage());
} /**
* 处理自定义异常{@link ServerException},并返回错误信息
*/
@ResponseBody
@ExceptionHandler(value = Exception.class)
public RequestResult ServerException() {
return RequestResult.getFailedInstance("系统异常");
} }
ServerException.class
/**
* @author TangZedong
* @apiNote 服务异常
* @since 2018/9/4 15:27
*/
public class ServerException extends RuntimeException {
// 错误代码
private short code = -1; public short getCode() {
return code;
} public ServerException(String message) {
super(message);
} public ServerException(short code, String message) {
super(message);
this.code = code;
} public ServerException(short code, String message, Throwable t) {
super(message, t);
this.code = code;
} }
RequestResult.class
/**
* @author TangZedong
* @apiNote 请求结果
* @since 2018/9/4 16:20
*/
public class RequestResult<T> {
private static final short SUCCESS_CODE = 0;
private static final short FAILED_CODE = -1; private static final boolean SUCCESS_STATUS = true;
private static final boolean FAILED_STATUS = false; private static final String NULL_MESSAGE = null;
private static final String NULL_DATA = null; private short code;
private String message;
private boolean success;
private T data; // 构造方法
public RequestResult(short code, String message, boolean success, T data) {
this.code = code;
this.message = message;
this.success = success;
this.data = data;
} // get方法
public short getCode() {
return code;
} public String getMessage() {
return message;
} public T getData() {
return data;
} public boolean isSuccess() {
return success;
} // 获取实例
public static <T> RequestResult getFailedInstance(short code, String message, T data) {
return new RequestResult(code, message, FAILED_STATUS, data);
} public static <T> RequestResult getFailedInstance(short code, String message) {
return new RequestResult(code, message, FAILED_STATUS, NULL_DATA);
} public static <T> RequestResult getFailedInstance(String message) {
return new RequestResult(FAILED_CODE, message, FAILED_STATUS, NULL_DATA);
} public static <T> RequestResult getSuccessInstance(short code, String message, T data) {
return new RequestResult(code, message, SUCCESS_STATUS, data);
} public static <T> RequestResult getSuccessInstance(short code, T data) {
return new RequestResult(code, NULL_MESSAGE, SUCCESS_STATUS, data);
} public static <T> RequestResult getSuccessInstance(T data) {
return new RequestResult(SUCCESS_CODE, NULL_MESSAGE, SUCCESS_STATUS, data);
} }
spring boot配置统一异常处理的更多相关文章
- 基于Spring Boot的统一异常处理设计
基于Spring Boot的统一异常处理设计 作者: Grey 原文地址:https://www.cnblogs.com/greyzeng/p/11733327.html Spring Boot中,支 ...
- spring boot 中统一异常处理
基于 spring boot 对异常处理的不友好,现在通过其他的方式来统一处理异常 步骤一:自定义异常类 public class UserNotExistException extends Runt ...
- 基于spring boot的统一异常处理
一.springboot的默认异常处理 Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容. 例如这里我 ...
- Spring Boot实践——统一异常处理
注解说明 @ControllerAdvice,是Spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强.让我们先看看@ControllerAdvice的实现: /** * Special ...
- Spring Boot学习——统一异常处理
本随笔记录使用Spring Boot统一处理异常. 本文实例是从数据库中根据ID查询学生信息,要求学生的年龄在14——20岁之间.小于14岁,提示“你可能在上初中”:大于20岁,提示“呢可能在上大学” ...
- 【Spring Boot】Spring Boot之统一异常处理
一.统一异常处理的作用 在web应用中,请求处理时,出现异常是非常常见的.所以当应用出现各类异常时,进行异常的统一捕获或者二次处理(比如空指针异常或sql异常正常是不能外抛)是非常必要的,然后右统一异 ...
- spring boot 2 统一异常处理
spring mvc 针对controller层异常统一处理非常简单,使用 @RestControllerAdvice 或 @RestControllerAdvice 注解就可以轻@RestContr ...
- Spring Boot配置过滤器的两种方式
过滤器(Filter)是Servlet中常用的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,常用的场景有登录校验.权限控制.敏感词过滤等,下面介绍下Spring Boot配置过 ...
- Spring Boot API 统一返回格式封装
今天给大家带来的是Spring Boot API 统一返回格式封装,我们在做项目的时候API 接口返回是需要统一格式的,只有这样前端的同学才可对接口返回的数据做统一处理,也可以使前后端分离 模式的开发 ...
随机推荐
- 腾讯云部署golang flow流程,vue.js+nginx+mysql+node.js
这次总算把js-ojus/flow的ui部署到腾讯云上,比较吐槽的就是,为啥这么复杂,vue.js前后端分离,比golang编写的部署方面复杂几万倍.真是浪费人生啊. golang+sqlite写的东 ...
- Java并发编程(十二)Callable、Future和FutureTask
一.Callable与Runnable 先说一下java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法: public interface Runnable { pu ...
- MySQL GTID复制错误处理之跳过错误
某Slave报错信息: mysql> show slave status\G; mysql> show slave status\G; ************************** ...
- 如何创建和还原SQL Server 2005数据库?
在还原SQL Server 2005数据库文件之前,建议先把要还原的数据库文件复制粘贴到某个盘的根目录下,这样便于一会儿找到相关的文件,比如C盘. 先打开SQL Server 2005的Microso ...
- Spring Boot 静态页面
spring boot项目只有src目录,没有webapp目录,会将静态访问(html/图片等)映射到其自动配置的静态目录,如下 /static /public /resources /META-IN ...
- C语句详细(初学者)
C程序的执行部分是由语句组成的.程序的功能也是由执行语句实现的. C语句分为以下六类: 1.表达式语句:表达式加上分号“:”组成.执行表达式语句就是计算表达式的值. 2.函数调用语句:函数名.实际参数 ...
- VS2015安装与C++进行简单单元测试
1:VS2015是微软最新发布的编译器,http://www.itellyou.cn/这是我们的北航大神助教提供的下载网址,以前我们都是自己在网上找,找到的总不是那么如意,这下大神助教提供的网址就好好 ...
- Android Studio 学习Demo内容及一些bug处理技巧 -----个人技术文档,两次冲刺总结
实现的基本内容 1.基本界面的注册(包括转换界面,隐式,显式注册,主界面的入口注册) 2.匿名内部类实现Button按钮的监听事件,并通过Toast进行显示 3.界面切换(显式.隐式) 4.调用浏览器 ...
- 使用JavaConfig和注解方式实现零xml配置的Spring MVC项目
1. 引言 Spring MVC是Spring框架重要组成部分,是一款非常优秀的Web框架.Spring MVC以DispatcherServlet为核心,通过可配置化的方式去处理各种web请求. 在 ...
- Ubuntu18.04 安装tomcat9
1.官网下载 2.移动到/usr/local/tomcat 3.解压 4.修改权限,否则在idea中不能正常使用