背景
- 写了一个全局异常捕获的工具类:
@ExceptionHandler({Exception.class})
@ResponseStatus(HttpStatus.OK)
public BaseResult ErrorHandler(Exception ex) {
log.info("异常信息如下:牛逼");
return BaseResult.fail().setMessage(ex.getMessage());
}
然后我发现我明明设置了返回的http状态码是200,但是前端一直提示500,当时就很纳闷。
然后注意看:
无法接受的类型,可能是序列化的时候失败了。
package com.alix.aop.common;
import com.alix.aop.common.enums.ErrorCode;
/**
* @author alix.yang
* @date 2022/4/21 14:55
*/
public class BaseResult<T> {
private Integer code;
private T data;
private String message;
public BaseResult(ErrorCode errorCode, T t) {
this.code = errorCode.getCode();
this.data = t;
}
public BaseResult(ErrorCode errorCode) {
this.code = errorCode.getCode();
}
public static <T> BaseResult<T> success(T t) {
return new BaseResult<>(ErrorCode.SUCCESS, t);
}
public static <T> BaseResult<T> success() {
return success(null);
}
public static <T> BaseResult<T> fail() {
return new BaseResult<>(ErrorCode.SYSTEM_ERROR);
}
public static <T> BaseResult<T> fail(String message) {
BaseResult baseResult = new BaseResult<>(ErrorCode.SYSTEM_ERROR);
baseResult.message = message;
return baseResult;
}
// public String getMessage() {
// return this.message;
// }
public BaseResult setMessage(String message) {
this.message = message;
return this;
}
// public T getData() {
// return this.data;
// }
//
// public Integer getCode() {
// return this.code;
// }
@Override
public String toString() {
return "BaseResult{" +
"code=" + code +
", data=" + data +
", message='" + message + '\'' +
'}';
}
}
发现这个实体类缺少Getter方法,于是加上这个方法就好了。