Spring Boot 如何自定义返回错误码错误信息

时间:2021-05-20

说明

•在实际的开发过程中,很多时候要定义符合自己业务的错误码和错误信息,而不是统一的而不是统一的下面这种格式返回到调用端

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@Slf4jpublic 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 如何自定义返回错误码错误信息 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章