@RestControllerAdvice
@Slf4j
public class GlobalExceptionTranslator {
}
@ExceptionHandler(BusinessException.class)
public JSONObject handleError(BusinessException e) {
log.error("Business Exception {}", getStackTraceAsString(e));
return error(e);
}
@ExceptionHandler(Throwable.class)
public JSONObject handleError(Throwable undefined) {
log.error("Internal Server Error {}", getStackTraceAsString(undefined));
return error(new BusinessException(FAILURE));
}
public class PaymentException extends BusinessException {
//重写构造函数,从而定义该自定义异常的用户可见的错误信息
public PaymentException() {
super("支付失败");
}
}
类名 | 定义 | 预置错误信息 |
PermissionDenyException | 用户访问未授权的内容 | 权限不足 |
ServiceNotFoundException | 调用微服务失败 | 调用相关服务失败 |
其他异常 | ... | ... |
@Getter
@AllArgsConstructor
public enum ResultCode {
/**
* 操作成功
*/
SUCCESS(HTTP_OK, "操作成功"),
/**
* 因程序内部错误操作失败(如不指定,则默认这个异常)
*/
FAILURE(HTTP_INTERNAL_ERROR, "系统运行异常,请联系管理员"),
/**
* 用户访问未授权的内容
*/
UN_AUTHORIZED(HTTP_UNAUTHORIZED, "权限不足"),
/**
* 调用微服务失败
*/
NOT_FOUND(HTTP_NOT_FOUND, "调用相关服务失败");
final int code;
final String msg;
}
public class PermissionDenyException extends BusinessException {
public PermissionDenyException() {
super(UN_AUTHORIZED);
}
}
public class GlobalExceptionTranslator {
@ExceptionHandler(NewGlobalException.class)
public JSONObject handleError(NewGlobalException e) {
// 这里可以实现自定义的异常策略
return error(new BusinessException(e.getResultCode(),e.getMessage()));
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |