时间: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邮箱联系删除。
微信企业号根据错误码返回错误信息类封装微信开发中返回错误码每次需要查询错误返回码文档才知道具体的错误信息(查看返回的errormsg也可知道),因此封装一个错误
laravel在使用了dingoAPI后,错误信息被dingo异常类接管了,返回信息变成了:要返回自定义的错误信息,就需要再把错误异常类接管回来(大概这个意思.
在开发过程中,有时候会需要使用错误码+错误信息的形式,来返回某些业务操作的错误结果信息,来代替效率较低的异常传递。这样就需要封装一个统一的Resultmodel
errMsg是一个错误消息的数组,这样方便自定义,errName是对应错误信息元件名数组,这样可以非富自定义显示方式,FormValid.allName记录了所
当Android开发处理错误信息时,经常会以Dialog的形式显示错误信息,但是每次都new一个Dialog,很麻烦,也增加程序的开销,所以今天就分享一种自定义