MyControllerAdvice.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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.security.authentication.BadCredentialsException;
  9. import org.springframework.security.core.AuthenticationException;
  10. import org.springframework.security.core.userdetails.UsernameNotFoundException;
  11. import org.springframework.web.bind.annotation.ControllerAdvice;
  12. import org.springframework.web.bind.annotation.ExceptionHandler;
  13. import org.springframework.web.bind.annotation.ResponseBody;
  14. import java.text.ParseException;
  15. /**
  16. * 统一异常处理器
  17. * Created by 刘文彬 on 2018/5/9.
  18. */
  19. @ControllerAdvice
  20. public class MyControllerAdvice {
  21. @Autowired
  22. private Tracer tracer;
  23. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  24. @ResponseBody
  25. @ExceptionHandler(value = ApiException.class)
  26. public BaseEnvelop myErrorHandler(ApiException ex) {
  27. tracer.getCurrentSpan().logEvent(ex.getMessage());
  28. logger.error(ex.getMessage());
  29. return BaseEnvelop.getError(ex.getMessage(), ex.getErrorCode());
  30. }
  31. @ResponseBody
  32. @ExceptionHandler(value = ParseException.class)
  33. public BaseEnvelop myErrorHandler(ParseException ex) {
  34. tracer.getCurrentSpan().logEvent(BaseEnvelopStatus.status_10200.getName()+ex.getMessage());
  35. logger.error(BaseEnvelopStatus.status_10200.getName()+ex.getMessage());
  36. return BaseEnvelop.getError(BaseEnvelopStatus.status_10200.getName()+ex.getMessage(), BaseEnvelopStatus.status_10200.getCode());
  37. }
  38. //
  39. // @ResponseBody
  40. // @ExceptionHandler(value = UsernameNotFoundException.class)
  41. // public BaseEnvelop myErrorHandler(UsernameNotFoundException ex) {
  42. // tracer.getCurrentSpan().logEvent(BaseEnvelopStatus.status_10200.getName()+ex.getMessage());
  43. // logger.error(BaseEnvelopStatus.status_10200.getName()+ex.getMessage());
  44. // return BaseEnvelop.getError(BaseEnvelopStatus.status_10200.getName()+ex.getMessage(), BaseEnvelopStatus.status_10200.getCode());
  45. // }
  46. }