|
|
@@ -33,17 +33,27 @@ public class GlobalExceptionHandler {
|
|
|
*/
|
|
|
@ExceptionHandler(BusinessException.class)
|
|
|
public Result<Void> handleBusinessException(BusinessException e) {
|
|
|
- log.warn("业务异常:{}", I18nUtil.getMessage(e.getMessage()));
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
- return Result.error(e.getCode(), I18nUtil.getMessage(e.getMessage()));
|
|
|
+ String message = e.getMessage();
|
|
|
+ String i18nMessage = I18nUtil.getMessage(message);
|
|
|
+ log.warn("业务异常:{}", i18nMessage != null ? i18nMessage : message);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+ return Result.error(e.getCode(), i18nMessage != null ? i18nMessage : message);
|
|
|
}
|
|
|
|
|
|
|
|
|
@ExceptionHandler(RuntimeException.class)
|
|
|
public Result<Void> handleRuntimeException(RuntimeException e) {
|
|
|
- log.warn("运行异常:{}", I18nUtil.getMessage(e.getMessage()));
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
- return Result.error(I18nUtil.getMessage(e.getMessage()));
|
|
|
+ String message = e.getMessage();
|
|
|
+ String i18nMessage = message != null ? I18nUtil.getMessage(message) : null;
|
|
|
+ log.warn("运行异常:{}", i18nMessage != null ? i18nMessage : message);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+ return Result.error(i18nMessage != null ? i18nMessage : (message != null ? message : "系统运行异常"));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -52,7 +62,10 @@ public class GlobalExceptionHandler {
|
|
|
@ExceptionHandler(Exception.class)
|
|
|
public Result<Void> handleException(Exception e) {
|
|
|
log.error("系统异常", e);
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
return Result.error(500, "系统繁忙,请稍后重试");
|
|
|
}
|
|
|
|
|
|
@@ -63,7 +76,10 @@ public class GlobalExceptionHandler {
|
|
|
@ExceptionHandler(IllegalArgumentException.class)
|
|
|
public Result<Void> handleIllegalArgumentException(IllegalArgumentException e) {
|
|
|
log.error("参数异常", e);
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
+ }
|
|
|
return Result.error(HttpServletResponse.SC_BAD_REQUEST, e.getMessage());
|
|
|
}
|
|
|
|
|
|
@@ -81,7 +97,10 @@ public class GlobalExceptionHandler {
|
|
|
return i18nMessage != null ? i18nMessage : defaultMessage;
|
|
|
})
|
|
|
.collect(Collectors.toList());
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
+ }
|
|
|
return Result.error(HttpServletResponse.SC_BAD_REQUEST, collect.toString());
|
|
|
}
|
|
|
|
|
|
@@ -91,7 +110,10 @@ public class GlobalExceptionHandler {
|
|
|
@ExceptionHandler(MissingServletRequestParameterException.class)
|
|
|
public Result<Void> handleMissingServletRequestParameter(MissingServletRequestParameterException e) {
|
|
|
log.warn("缺少请求参数:{}", e.getParameterName());
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
+ }
|
|
|
return Result.error(HttpServletResponse.SC_BAD_REQUEST, "缺少请求参数:" + e.getParameterName());
|
|
|
}
|
|
|
|
|
|
@@ -101,7 +123,10 @@ public class GlobalExceptionHandler {
|
|
|
@ExceptionHandler(MethodArgumentTypeMismatchException.class)
|
|
|
public Result<Void> handleMethodArgumentTypeMismatch(MethodArgumentTypeMismatchException e) {
|
|
|
log.warn("参数类型不匹配:{}", e.getName());
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
+ }
|
|
|
return Result.error(HttpServletResponse.SC_BAD_REQUEST, "参数类型不匹配:" + e.getName());
|
|
|
}
|
|
|
|
|
|
@@ -111,7 +136,10 @@ public class GlobalExceptionHandler {
|
|
|
@ExceptionHandler(HttpMessageNotReadableException.class)
|
|
|
public Result<Void> handleHttpMessageNotReadable(HttpMessageNotReadableException e) {
|
|
|
log.warn("请求体解析失败:{}", e.getMessage());
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
|
|
|
+ }
|
|
|
return Result.error(HttpServletResponse.SC_BAD_REQUEST, "请求体格式错误");
|
|
|
}
|
|
|
|
|
|
@@ -121,7 +149,10 @@ public class GlobalExceptionHandler {
|
|
|
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
|
|
|
public Result<Void> handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException e) {
|
|
|
log.warn("请求方法不支持:{}", e.getMethod());
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
|
|
|
+ }
|
|
|
return Result.error(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "不支持的请求方法:" + e.getMethod());
|
|
|
}
|
|
|
|
|
|
@@ -131,7 +162,10 @@ public class GlobalExceptionHandler {
|
|
|
@ExceptionHandler(HttpMediaTypeNotSupportedException.class)
|
|
|
public Result<Void> handleHttpMediaTypeNotSupported(HttpMediaTypeNotSupportedException e) {
|
|
|
log.warn("媒体类型不支持:{}", e.getContentType());
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
|
|
|
+ }
|
|
|
return Result.error(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, "不支持的媒体类型:" + e.getContentType());
|
|
|
}
|
|
|
|
|
|
@@ -141,18 +175,23 @@ public class GlobalExceptionHandler {
|
|
|
@ExceptionHandler(TokenExpiredException.class)
|
|
|
public Result<Void> handleTokenExpired(TokenExpiredException e) {
|
|
|
log.warn("Token已过期:{}", e.getMessage());
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
|
|
+ }
|
|
|
return Result.error(HttpServletResponse.SC_UNAUTHORIZED, "Token已过期,请重新登录");
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* JWT Token 验证失败
|
|
|
*/
|
|
|
@ExceptionHandler(JWTVerificationException.class)
|
|
|
public Result<Void> handleJWTVerification(JWTVerificationException e) {
|
|
|
log.warn("Token验证失败:{}", e.getMessage());
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
|
|
|
+ }
|
|
|
return Result.error(HttpServletResponse.SC_UNAUTHORIZED, "Token无效,请重新登录");
|
|
|
}
|
|
|
|
|
|
@@ -162,7 +201,10 @@ public class GlobalExceptionHandler {
|
|
|
@ExceptionHandler(NullPointerException.class)
|
|
|
public Result<Void> handleNullPointerException(NullPointerException e) {
|
|
|
log.error("空指针异常", e);
|
|
|
- ServletUtils.getHttpResponse().setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
+ HttpServletResponse response = ServletUtils.getHttpResponse();
|
|
|
+ if (response != null) {
|
|
|
+ response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
return Result.error(500, "系统繁忙,请稍后重试");
|
|
|
}
|
|
|
}
|