ExceptionHandle.java 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package com.winhc.repal.exception;
  2. import com.winhc.common.base.BeanResponse;
  3. import com.winhc.common.enums.CodeMsg;
  4. import com.winhc.common.exception.CommonException;
  5. import lombok.extern.slf4j.Slf4j;
  6. import org.springframework.validation.BindException;
  7. import org.springframework.web.bind.MethodArgumentNotValidException;
  8. import org.springframework.web.bind.annotation.ExceptionHandler;
  9. import org.springframework.web.bind.annotation.RestControllerAdvice;
  10. /**
  11. * @description: 全局异常捕获
  12. * @author: yujie
  13. * @date 2019/4/24 10:07
  14. */
  15. @Slf4j
  16. @RestControllerAdvice
  17. public class ExceptionHandle {
  18. /**
  19. * 异常捕获
  20. * @param exception 异常
  21. * @return
  22. */
  23. @ExceptionHandler(value = Exception.class)
  24. public BeanResponse<Void> exceptionHandle(Exception exception) {
  25. log.error("系统异常", exception);
  26. return BeanResponse.error(CodeMsg.FAILED);
  27. }
  28. /**
  29. * 通用异常捕获
  30. * @param commonException 通用异常
  31. * @return
  32. */
  33. @ExceptionHandler(value = CommonException.class)
  34. public BeanResponse<Void> commonExceptionHandle(CommonException commonException) {
  35. //log.info(commonException.getMessage(), commonException);
  36. return BeanResponse.error(CodeMsg.FAILED.getCode(), commonException.getMessage());
  37. }
  38. /**
  39. * 参数校验异常绑定
  40. * @param bindException 绑定异常
  41. * @return
  42. */
  43. @ExceptionHandler(value = BindException.class)
  44. public BeanResponse<Void> bindExceptionHandle(BindException bindException) {
  45. StringBuilder msgBuilder = new StringBuilder();
  46. bindException.getBindingResult().getFieldErrors().forEach(error -> msgBuilder.append(error.getDefaultMessage()));
  47. //bindException.getFieldErrors().forEach(error -> msgBuilder.append(error.getField()).append(":")
  48. // .append(error.getDefaultMessage()).append("/"));
  49. //msgBuilder.deleteCharAt(msgBuilder.lastIndexOf("/"));
  50. String errorMsg = msgBuilder.toString();
  51. log.error("参数异常:" + errorMsg);
  52. return BeanResponse.error(CodeMsg.VALIDATE_PARAMETER.getCode(), errorMsg);
  53. }
  54. /**
  55. * 参数校验异常绑定
  56. * @param ex 绑定异常
  57. * @return
  58. */
  59. @ExceptionHandler(value = MethodArgumentNotValidException.class)
  60. public BeanResponse<Void> argumentNotValid(MethodArgumentNotValidException ex) {
  61. StringBuilder msgBuilder = new StringBuilder();
  62. //ex.getBindingResult().getFieldErrors().forEach(error -> msgBuilder.append(error.getField()).append(":")
  63. //.append(error.getDefaultMessage()).append("/"));
  64. ex.getBindingResult().getFieldErrors().forEach(error -> msgBuilder.append(error.getDefaultMessage()));
  65. //msgBuilder.deleteCharAt(msgBuilder.lastIndexOf("/"));
  66. String errorMsg = msgBuilder.toString();
  67. log.error("参数异常:" + errorMsg);
  68. return BeanResponse.error(CodeMsg.VALIDATE_PARAMETER.getCode(), errorMsg);
  69. }
  70. /**
  71. * 参数校验异常绑定
  72. * @param ex 绑定异常
  73. * @return
  74. */
  75. @ExceptionHandler(value = {IllegalArgumentException.class})
  76. public BeanResponse<Void> argumentException(RuntimeException ex) {
  77. log.error("IllegalArgumentException:" + ex.getMessage());
  78. return BeanResponse.error(CodeMsg.VALIDATE_PARAMETER.getCode(), ex.getMessage());
  79. }
  80. }