java异常自定义返回信息,Spring Boot 如何自定义返回错误码错误信息
说明
在实际的开发过程中,很多时候要定义符合自己业务的错误码和错误信息,而不是统一的而不是统一的下面这种格式返回到调用端
INTERNAL_SERVER_ERROR(500, "Internal Server Error"),
下面我们来看看如何将我们自定义的错误码和错误信息返回到调用端。
1 自定义错误码
首先我们要定义一个枚举类
public enum ErrorEnum {
/*
* 错误信息
* */
E_20011(20011, "缺少必填参数"),
;
private Integer errorCode;
private String errorMsg;
ErrorEnum(Integer errorCode, String errorMsg) {
this.errorCode = errorCode;
this.errorMsg = errorMsg;
}
public Integer getErrorCode() {
return errorCode;
}
public String getErrorMsg() {
return errorMsg;
}
2 定义一个异常类
定义一个异常类继承RuntimeException类
public class BusinessException extends RuntimeException {
private static final long serialVersionUID = 1L;
private Integer code;
/**
* @param errorEnum 以错误的ErrorEnum做参数
*/
public BusinessException(ErrorEnum errorEnum) {
super(errorEnum.getErrorMsg());
this.code = errorEnum.getErrorCode();
this.resultJson = CommonUtil.errorJson(errorEnum);
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
}
3 定义一个异常返回的模板类
模板类定义了如何将异常通过什么形式进行返回。
public class ExceptionResponse {
private String message;
private Integer code;
public ExceptionResponse(Integer code, String message) {
this.message = message;
this.code = code;
}
public static ExceptionResponse create(Integer code, String message) {
return new ExceptionResponse(code, message);
}
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
}
4 定义全局处理 Controller 层异常
@ControllerAdvice
@Slf4j
public class ExceptionHandler {
@ResponseBody
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ExceptionHandler(Exception.class)
public ExceptionResponse handleException(Exception ex) {
if (ex instanceof BusinessException) {
log.warn(ex.getMessage(), ex);
BusinessException businessException = (BusinessException) ex;
return ExceptionResponse.create(businessException.getCode(), businessException.getMessage());
} else {
log.error(ex.getMessage(), ex);
return ExceptionResponse.create(HttpStatus.INTERNAL_SERVER_ERROR.value(), ex.getMessage());
}
}
}
5 演示效果
定义Controller层
@PostMapping("test/exception")
public String testException() {
throw new BusinessException(ErrorEnum.E_20011);
}
通过postMan调用返回结果为
{ "message": "缺少必填参数", "code": 20011 }
java异常自定义返回信息,Spring Boot 如何自定义返回错误码错误信息相关推荐
- spring boot: GlobalDefaultExceptionHandler方法内的友好错误提示,全局异常捕获
spring boot: GlobalDefaultExceptionHandler方法内的友好错误提示,全局异常捕获 当你的某个控制器内的某个方法报错,基本上回显示出java错误代码,非常不友好,这 ...
- spring boot之自定义的注解的切面编程
springBoot目录 1. 前言 在上一章中我们知道了,注解的本质其实就是一个标签.但是我们可以通过反射或其他方式从注解的宿主对象上获取到注解对象信息,这就让注解的可玩性变得很强.可以通过注解来描 ...
- java 微服务实践 视频,全新JAVA微服为务实战Spring Boot系列视频教程 小马哥 JAVA微服务实践视频课程...
全新JAVA微服为务实战Spring Boot系列视频教程 小马哥 JAVA微服务实践视频课程 ===============课程目录=============== ├─(1) 03Java 微服务实 ...
- spring boot admin 自定义
自定义通知事件 实现notifier接口 // 此接口在服务端 package de.codecentric.boot.admin.server.notify; public interface No ...
- Spring Boot简略自定义starters
更多信息: 本篇算是学习笔记 视频 尚硅谷 配置文件的信息 Spring Boot文档 狂神老师的bilibli账号:如果想学相关的知识可以关注一下 目录 更多信息: Starter 测试安装 Sta ...
- springboot跳转html_畅游Spring Boot系列 — 自定义配置
这里要说的自定义配置主要是两类:一类是关于Spring MVC的扩展配置,一类是Spring Boot自身通过配置文件的自定义配置 首先,我们来看一下SpringBoot中关于Spring MVC的相 ...
- spring boot maven项目返回值乱码的解决方法
spring boot maven项目返回值乱码的解决方法 1.先看乱码效果: spring boot maven项目,返回值乱码,如下图: 控制台打印log乱码,如下图: 有swagger的话,sw ...
- Linux新建yaml文件,Spring Boot 装载自定义yml文件
yml格式的配置文件感觉很人性化,所以想把项目中的.properties都替换成.yml文件,蛋疼的是springboot自1.5以后就把@configurationProperties中的locat ...
- boot返回码规范 spring_SpringBoot自定义异常体系和错误码规范定义(个人经验总结)...
前言 本文说的自定义异常指的是继承了RuntimeException,专门用于Spring全局异常捕获处理的自定义异常类型,需要应用程序显示捕获并处理的异常不在本次讨论范围内. 本随笔经验总结,如有不 ...
最新文章
- 登录linux后台工具,linux后台进程管理工具-supervisor
- 【Flutter】Image 组件 ( 加载网络图片 | 加载静态图片 | 加载本地图片 | path_provider 插件 )
- Chrome 74 Beta 发布,Windows 10 支持暗色主题
- Twig模板语言入门
- Mips TLB miss异常
- php 匹配正则,php正则匹配类
- java笔试必考知识_面试必备:常考Java基础知识总结(持续更新)
- 必备知识:工业相机相关知识(初学者必备)
- 最新C++网络编程实践视频教程 陈硕主讲(完整)
- 贝叶斯统计第二版第五章答案_贝叶斯统计第二部分
- [ARM]GIC相关知识
- SQL解决Error converting data type nvarchar to numeric.
- android 充电电压过压保护值修改
- 50天计算机考研数学,50天数学冲刺:那些hold住高分的诀窍
- AIMA:如何通过质量指标提高QA的绩效(译)
- SpringMVC+FastJson+Swagger集成完整示例
- 双系统下ubuntu自动挂载windows盘
- 零基础小白,学UI设计能找到高薪工作吗?
- DataFrame数据预处理:修改指定列的数据类型
- Spacebuilder可以做什么?
热门文章
- data.name.toLowerCase() is not a function问题
- 本地psql连接远程Oracle虚拟机_03
- Navicat创建数据库表 、导入sql文件,生成表结构
- JavaScript 常用工具函数
- 循环结构, while, do……while
- cygwin 远程连接linux,Cygwin解决Windows远程登录linux服务器
- qt窗口左上角坐标变动函数使用中的误区
- html清楚css的影响,08、清除浮动的影响.html
- ie9 css过大,CSS 3后台大小不适用于IE9(CSS 3 background-size not working on IE9)
- html或原生js是单一对应绑定的,原生js数据绑定