MyControllerAdvice.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package com.yihu.base.security.exception;
  2. import com.yihu.base.security.vo.BaseEnvelop;
  3. import com.yihu.base.security.vo.BaseEnvelopStatus;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.cloud.sleuth.Tracer;
  8. import org.springframework.web.bind.annotation.ControllerAdvice;
  9. import org.springframework.web.bind.annotation.ExceptionHandler;
  10. import org.springframework.web.bind.annotation.ResponseBody;
  11. import java.text.ParseException;
  12. /**
  13. * 统一异常处理器
  14. * Created by 刘文彬 on 2018/5/9.
  15. */
  16. @ControllerAdvice
  17. public class MyControllerAdvice {
  18. @Autowired
  19. private Tracer tracer;
  20. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  21. @ResponseBody
  22. @ExceptionHandler(value = ApiException.class)
  23. public BaseEnvelop myErrorHandler(ApiException ex) {
  24. tracer.getCurrentSpan().logEvent(ex.getMessage());
  25. logger.error(ex.getMessage());
  26. return BaseEnvelop.getError(ex.getMessage(), ex.getErrorCode());
  27. }
  28. @ResponseBody
  29. @ExceptionHandler(value = ParseException.class)
  30. public BaseEnvelop myErrorHandler(ParseException ex) {
  31. tracer.getCurrentSpan().logEvent(BaseEnvelopStatus.status_10200.getName()+ex.getMessage());
  32. logger.error(BaseEnvelopStatus.status_10200.getName()+ex.getMessage());
  33. return BaseEnvelop.getError(BaseEnvelopStatus.status_10200.getName()+ex.getMessage(), BaseEnvelopStatus.status_10200.getCode());
  34. }
  35. //
  36. // @ResponseBody
  37. // @ExceptionHandler(value = UsernameNotFoundException.class)
  38. // public BaseEnvelop myErrorHandler(UsernameNotFoundException ex) {
  39. // tracer.getCurrentSpan().logEvent(BaseEnvelopStatus.status_10200.getName()+ex.getMessage());
  40. // logger.error(BaseEnvelopStatus.status_10200.getName()+ex.getMessage());
  41. // return BaseEnvelop.getError(BaseEnvelopStatus.status_10200.getName()+ex.getMessage(), BaseEnvelopStatus.status_10200.getCode());
  42. // }
  43. }