Spring Boot 如何自定义返回错误码错误信息
2019-10-23 18:05
2311 查看
说明
•在实际的开发过程中,很多时候要定义符合自己业务的错误码和错误信息,而不是统一的而不是统一的下面这种格式返回到调用端
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 }
总结
以上所述是小编给大家介绍的Spring Boot 如何自定义返回错误码错误信息 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
您可能感兴趣的文章:
相关文章推荐
- springboot validation 统一返回错误信息
- Spring boot +Spring Security + Thymeleaf 认证失败返回错误信息
- Spring Boot实战之全局异常捕获 实现参数异常检查返回统一错误信息
- Springboot+Security用户无权限返回自定义信息
- spring boot 全局统一格式返回自定义异常信息
- 【原】基础篇:第十二篇,Ext组件系列之--如何获取后台返回的自定义错误信息和系统异常信息
- spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- spring boot 如何返回视图而不是string的方法
- SpringBoot如何导入自定义配置的yml文件
- SpringBoot如何导入自定义配置的yml文件
- 异常解决篇:Spring Boot默认错误返回格式变成数组@RequestBody无法解析Json格式
- Spring Boot下如何自定义Repository中的DAO方法
- SpringBoot如何返回(访问)到template下面的html页面
- ASP.NET中MVC使用AJAX调用JsonResult方法并返回自定义错误信息
- SpringBoot 如何自定义过滤器(filter)
- 如何解决ubuntu中使用SDL_OpenAudio失败返回错误信息no such audio device
- springboot如何读取自定义配置项
- idea启动springboot项目时报错,如何解决,急! 错误日志如下
- 解决spring boot中rest接口404 500等错误返回统一的json格式
- Spring Boot下如何自定义Repository中的DAO方法