GlobalExceptionHandler.java 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package com.rongwei.zhsw.config;
  2. import com.rongwei.rwcommon.base.R;
  3. import com.rongwei.zhsw.system.controller.SwMonthlyMeterReadingRecordController;
  4. import org.springframework.stereotype.Component;
  5. import org.springframework.validation.FieldError;
  6. import org.springframework.web.bind.MethodArgumentNotValidException;
  7. import org.springframework.web.bind.annotation.ExceptionHandler;
  8. import org.springframework.web.bind.annotation.RestControllerAdvice;
  9. import javax.validation.ConstraintViolation;
  10. import javax.validation.ConstraintViolationException;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13. import java.util.stream.Collectors;
  14. @Component("globalExceptionHandler1") // 指定 Bean 名称
  15. @RestControllerAdvice(basePackages="com.rongwei.zhsw.system.controller",assignableTypes = {SwMonthlyMeterReadingRecordController.class})
  16. public class GlobalExceptionHandler {
  17. /**
  18. * 处理所有 @Valid 参数校验失败异常
  19. */
  20. @ExceptionHandler(MethodArgumentNotValidException.class)
  21. public R handleValidationException(MethodArgumentNotValidException ex) {
  22. Map<String, String> errors = new HashMap<>();
  23. ex.getBindingResult().getAllErrors().forEach(error -> {
  24. String fieldName = ((FieldError) error).getField();
  25. String message = error.getDefaultMessage();
  26. errors.put(fieldName, message);
  27. });
  28. return R.error("400", "参数校验失败").putData( errors);
  29. }
  30. /**
  31. * 处理List校验异常(新增)
  32. */
  33. @ExceptionHandler(ConstraintViolationException.class)
  34. public R handleConstraintViolation(ConstraintViolationException ex) {
  35. Map<String, String> errors = ex.getConstraintViolations()
  36. .stream()
  37. .collect(Collectors.toMap(
  38. v -> v.getPropertyPath().toString(),
  39. ConstraintViolation::getMessage
  40. ));
  41. return R.error("400", "列表参数校验失败").putData(errors);
  42. }
  43. /**
  44. * 兜底异常处理
  45. */
  46. @ExceptionHandler(Exception.class)
  47. public R handleException(Exception ex) {
  48. return R.error("服务器异常,请联系管理员!");
  49. }
  50. }