| 对比新文件 |
| | |
| | | package com.doumee.jtt808.web.controller; |
| | | |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.dao.DuplicateKeyException; |
| | | import org.springframework.http.converter.HttpMessageNotReadableException; |
| | | import org.springframework.validation.BindException; |
| | | import org.springframework.validation.FieldError; |
| | | import org.springframework.web.HttpMediaTypeException; |
| | | import org.springframework.web.HttpRequestMethodNotSupportedException; |
| | | import org.springframework.web.bind.MissingServletRequestParameterException; |
| | | import org.springframework.web.bind.annotation.ExceptionHandler; |
| | | import org.springframework.web.bind.annotation.RestControllerAdvice; |
| | | import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; |
| | | import org.yzh.commons.model.APICodes; |
| | | import org.yzh.commons.model.APIException; |
| | | import org.yzh.commons.model.APIResult; |
| | | |
| | | import java.sql.SQLException; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | | @RestControllerAdvice |
| | | public class ExceptionController { |
| | | |
| | | private static final Logger log = LoggerFactory.getLogger(ExceptionController.class); |
| | | |
| | | private static final Pattern compile = Pattern.compile("'\\w*'"); |
| | | |
| | | // @ExceptionHandler(Exception.class) |
| | | // public APIResult<?> onException(Exception e) { |
| | | // log.error("绯荤粺寮傚父", e); |
| | | // return new APIResult<>(e); |
| | | // } |
| | | |
| | | @ExceptionHandler(APIException.class) |
| | | public APIResult<?> onAPIException(APIException e) { |
| | | return new APIResult<>(e); |
| | | } |
| | | |
| | | @ExceptionHandler(SQLException.class) |
| | | public APIResult<?> onSQLException(SQLException e) { |
| | | String message = e.getMessage(); |
| | | if (message.endsWith("have a default value")) |
| | | return new APIResult<>(APICodes.MissingParameter, e); |
| | | log.warn("绯荤粺寮傚父:", e); |
| | | return new APIResult<>(e); |
| | | } |
| | | |
| | | @ExceptionHandler(DuplicateKeyException.class) |
| | | public APIResult<?> onDuplicateKeyException(DuplicateKeyException e) { |
| | | Matcher matcher = compile.matcher(e.getCause().getMessage()); |
| | | List<String> values = new ArrayList<>(4); |
| | | while (matcher.find()) |
| | | values.add(matcher.group()); |
| | | |
| | | int size = values.size(); |
| | | int len = size < 2 ? size : (size / 2); |
| | | |
| | | StringBuilder sb = new StringBuilder(20); |
| | | sb.append("宸插瓨鍦ㄧ殑鍙风爜:"); |
| | | |
| | | for (int i = 0; i < len; i++) |
| | | sb.append(values.get(i)).append(','); |
| | | return new APIResult<>(APICodes.InvalidParameter, sb.substring(0, sb.length() - 1)); |
| | | } |
| | | |
| | | @ExceptionHandler(IllegalArgumentException.class) |
| | | public APIResult<?> onIllegalArgumentException(IllegalArgumentException e) { |
| | | log.warn("绯荤粺寮傚父:", e); |
| | | return new APIResult<>(APICodes.InvalidParameter, e.getMessage()); |
| | | } |
| | | |
| | | @ExceptionHandler(HttpMessageNotReadableException.class) |
| | | public APIResult<?> onHttpMessageNotReadableException(HttpMessageNotReadableException e) { |
| | | log.warn("绯荤粺寮傚父:", e); |
| | | return new APIResult<>(APICodes.TypeMismatch, e); |
| | | } |
| | | |
| | | @ExceptionHandler(BindException.class) |
| | | public APIResult<?> onBindException(BindException e) { |
| | | List<FieldError> fieldErrors = e.getFieldErrors(); |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (FieldError fieldError : fieldErrors) |
| | | sb.append(fieldError.getField()).append(fieldError.getDefaultMessage()); |
| | | return new APIResult<>(APICodes.MissingParameter, sb.toString()); |
| | | } |
| | | |
| | | @ExceptionHandler(HttpMediaTypeException.class) |
| | | public APIResult<?> onHttpMediaTypeException(HttpMediaTypeException e) { |
| | | log.warn("绯荤粺寮傚父:", e); |
| | | return new APIResult<>(APICodes.NotSupportedType, e.getMessage()); |
| | | } |
| | | |
| | | @ExceptionHandler(HttpRequestMethodNotSupportedException.class) |
| | | public APIResult<?> onHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) { |
| | | return new APIResult<>(APICodes.NotImplemented); |
| | | } |
| | | |
| | | @ExceptionHandler(MissingServletRequestParameterException.class) |
| | | public APIResult<?> onMissingServletRequestParameterException(MissingServletRequestParameterException e) { |
| | | return new APIResult<>(APICodes.MissingParameter, ":" + e.getParameterName()); |
| | | } |
| | | |
| | | @ExceptionHandler(MethodArgumentTypeMismatchException.class) |
| | | public APIResult<?> onMethodArgumentTypeMismatchException(MethodArgumentTypeMismatchException e) { |
| | | return new APIResult<>(APICodes.TypeMismatch, ":" + e.getName() + "=" + e.getValue(), e.getMessage()); |
| | | } |
| | | } |