diff --git a/ballcat-common/ballcat-common-conf/src/main/java/com/hccake/ballcat/common/conf/exception/GlobalExceptionHandlerResolver.java b/ballcat-common/ballcat-common-conf/src/main/java/com/hccake/ballcat/common/conf/exception/GlobalExceptionHandlerResolver.java index 24769fa1..93dde143 100644 --- a/ballcat-common/ballcat-common-conf/src/main/java/com/hccake/ballcat/common/conf/exception/GlobalExceptionHandlerResolver.java +++ b/ballcat-common/ballcat-common-conf/src/main/java/com/hccake/ballcat/common/conf/exception/GlobalExceptionHandlerResolver.java @@ -17,6 +17,7 @@ import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; import javax.validation.ValidationException; import java.util.List; @@ -36,6 +37,8 @@ public class GlobalExceptionHandlerResolver { @Value("${spring.profiles.active}") private String profile; + public final static String PROD_ERR_MSG = "系统异常,请联系管理员"; + /** * 全局异常捕获 * @param e the e @@ -47,7 +50,7 @@ public class GlobalExceptionHandlerResolver { log.error("全局异常信息 ex={}", e.getMessage(), e); globalExceptionHandler.handle(e); // 当为生产环境, 不适合把具体的异常信息展示给用户, 比如数据库异常信息. - String errorMsg = GlobalConstants.ENV_PROD.equals(profile) ? "系统异常,请联系管理员" : e.getLocalizedMessage(); + String errorMsg = GlobalConstants.ENV_PROD.equals(profile) ? PROD_ERR_MSG : e.getLocalizedMessage(); return R.failed(SystemResultCode.SERVER_ERROR, errorMsg); } @@ -64,6 +67,20 @@ public class GlobalExceptionHandlerResolver { return R.failed(SystemResultCode.BAD_REQUEST, e.getMessage()); } + /** + * MethodArgumentTypeMismatchException 异常捕获,主要用于Assert + * @param e the e + * @return R + */ + @ExceptionHandler(MethodArgumentTypeMismatchException.class) + @ResponseStatus(HttpStatus.BAD_REQUEST) + public R handleMethodArgumentTypeMismatchException(MethodArgumentTypeMismatchException e) { + log.error("参数类型转换异常 ex={}", e.getMessage(), e); + globalExceptionHandler.handle(e); + return R.failed(SystemResultCode.BAD_REQUEST, + GlobalConstants.ENV_PROD.equals(profile) ? PROD_ERR_MSG : e.getMessage()); + } + /** * 自定义业务异常捕获 业务异常响应码推荐使用200 用 result 结构中的code做为业务错误码标识 * @param e the e