场景
当项目中出现接口报500错误码,但是具体场景分析的时候发现,为用户权限不够,或者为流程已经结束(当前用户已经执行完该流程),我们想把这类接口的返回状态码修改为200,再把异常相关信息封装进返回结果中。
方案
自行定义异常类
public class SuccessCodeException extends ApplicationException implements IHttpCodeProvided, IEntityRelated {
private static final long serialVersionUID = -7757856130520849855L;
public SuccessCodeException(String errorCode) {
super(errorCode);
}
public SuccessCodeException(String errorCode, Object... args) {
super(errorCode, args);
}
public SuccessCodeException(String errorCode, Throwable cause) {
super(errorCode, cause);
}
public SuccessCodeException(String errorCode, Throwable innerException, Object... args) {
super(errorCode, innerException, args);
}
@Override
public int getHttpCode() {
return 200;
}
@Override
public String getEntity() {
return Arrays.toString(super.args);
}
}
再代码逻辑中的对应位置,捕捉异常抛出,或者直接抛出该异常。