fix:【framework 框架】GlobalExceptionHandler 兼容更多 ServiceException 情况
parent
6434ba1847
commit
37d120b193
|
@ -36,6 +36,7 @@ import org.springframework.web.bind.MissingServletRequestParameterException;
|
||||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||||
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
|
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
|
||||||
|
import org.springframework.web.multipart.MaxUploadSizeExceededException;
|
||||||
import org.springframework.web.servlet.NoHandlerFoundException;
|
import org.springframework.web.servlet.NoHandlerFoundException;
|
||||||
import org.springframework.web.servlet.resource.NoResourceFoundException;
|
import org.springframework.web.servlet.resource.NoResourceFoundException;
|
||||||
|
|
||||||
|
@ -93,6 +94,9 @@ public class GlobalExceptionHandler {
|
||||||
if (ex instanceof ValidationException) {
|
if (ex instanceof ValidationException) {
|
||||||
return validationException((ValidationException) ex);
|
return validationException((ValidationException) ex);
|
||||||
}
|
}
|
||||||
|
if (ex instanceof MaxUploadSizeExceededException) {
|
||||||
|
return maxUploadSizeExceededExceptionHandler((MaxUploadSizeExceededException) ex);
|
||||||
|
}
|
||||||
if (ex instanceof NoHandlerFoundException) {
|
if (ex instanceof NoHandlerFoundException) {
|
||||||
return noHandlerFoundExceptionHandler((NoHandlerFoundException) ex);
|
return noHandlerFoundExceptionHandler((NoHandlerFoundException) ex);
|
||||||
}
|
}
|
||||||
|
@ -111,9 +115,6 @@ public class GlobalExceptionHandler {
|
||||||
if (ex instanceof AccessDeniedException) {
|
if (ex instanceof AccessDeniedException) {
|
||||||
return accessDeniedExceptionHandler(request, (AccessDeniedException) ex);
|
return accessDeniedExceptionHandler(request, (AccessDeniedException) ex);
|
||||||
}
|
}
|
||||||
if (ex instanceof UncheckedExecutionException && ex.getCause() != ex) {
|
|
||||||
return allExceptionHandler(request, ex.getCause());
|
|
||||||
}
|
|
||||||
return defaultExceptionHandler(request, ex);
|
return defaultExceptionHandler(request, ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,6 +214,14 @@ public class GlobalExceptionHandler {
|
||||||
return CommonResult.error(BAD_REQUEST);
|
return CommonResult.error(BAD_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理上传文件过大异常
|
||||||
|
*/
|
||||||
|
@ExceptionHandler(MaxUploadSizeExceededException.class)
|
||||||
|
public CommonResult<?> maxUploadSizeExceededExceptionHandler(MaxUploadSizeExceededException ex) {
|
||||||
|
return CommonResult.error(BAD_REQUEST.getCode(), "上传文件过大,请调整后重试");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理 SpringMVC 请求地址不存在
|
* 处理 SpringMVC 请求地址不存在
|
||||||
*
|
*
|
||||||
|
@ -309,6 +318,12 @@ public class GlobalExceptionHandler {
|
||||||
*/
|
*/
|
||||||
@ExceptionHandler(value = Exception.class)
|
@ExceptionHandler(value = Exception.class)
|
||||||
public CommonResult<?> defaultExceptionHandler(HttpServletRequest req, Throwable ex) {
|
public CommonResult<?> defaultExceptionHandler(HttpServletRequest req, Throwable ex) {
|
||||||
|
// 特殊:如果是 ServiceException 的异常,则直接返回
|
||||||
|
// 例如说:https://gitee.com/zhijiantianya/yudao-cloud/issues/ICSSRM、https://gitee.com/zhijiantianya/yudao-cloud/issues/ICT6FM
|
||||||
|
if (ex.getCause() != null && ex.getCause() instanceof ServiceException) {
|
||||||
|
return serviceExceptionHandler((ServiceException) ex.getCause());
|
||||||
|
}
|
||||||
|
|
||||||
// 情况一:处理表不存在的异常
|
// 情况一:处理表不存在的异常
|
||||||
CommonResult<?> tableNotExistsResult = handleTableNotExists(ex);
|
CommonResult<?> tableNotExistsResult = handleTableNotExists(ex);
|
||||||
if (tableNotExistsResult != null) {
|
if (tableNotExistsResult != null) {
|
||||||
|
|
Loading…
Reference in New Issue