ErrorConfig.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.llisoft.pay.config;
  2. import java.util.Objects;
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.boot.web.servlet.error.ErrorController;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RestController;
  10. import com.llisoft.common.constant.CodeEnum;
  11. import com.llisoft.common.vo.ResponseVo;
  12. /**
  13. * 框架级异常处理, 覆盖默认/error
  14. * 根据错误信息返回具体的json结果
  15. * 模仿 org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController
  16. * @author YangJie [2018年12月27日]
  17. */
  18. @RestController
  19. public class ErrorConfig implements ErrorController {
  20. private Logger logger = LoggerFactory.getLogger(ErrorConfig.class);
  21. @RequestMapping("/error")
  22. public ResponseVo<Object> error(HttpServletRequest request, HttpServletResponse response) {
  23. response.setStatus(200); // 状态码全部200
  24. Object statusCode = request.getAttribute("javax.servlet.error.status_code");
  25. if(Objects.nonNull(statusCode) && statusCode instanceof Integer) {
  26. int code = Integer.parseInt(statusCode.toString());
  27. if(code == CodeEnum.C400.getCode()) {
  28. logger.error("/error: {}", CodeEnum.C400.getMsg());
  29. return ResponseVo.build(CodeEnum.C400);
  30. }else if (code == CodeEnum.C401.getCode()) {
  31. logger.error("/error: {}", CodeEnum.C401.getMsg());
  32. return ResponseVo.build(CodeEnum.C401);
  33. }else if (code == CodeEnum.C402.getCode()) {
  34. logger.error("/error: {}", CodeEnum.C402.getMsg());
  35. return ResponseVo.build(CodeEnum.C402);
  36. }else if (code == CodeEnum.C403.getCode()) {
  37. logger.error("/error: {}", CodeEnum.C403.getMsg());
  38. return ResponseVo.build(CodeEnum.C403);
  39. }else if (code == CodeEnum.C404.getCode()) {
  40. logger.error("/error: {}", CodeEnum.C404.getMsg());
  41. return ResponseVo.build(CodeEnum.C404);
  42. }
  43. }
  44. logger.error("/error: {}", CodeEnum.C500.getMsg());
  45. return ResponseVo.build(CodeEnum.C500);
  46. }
  47. @Override
  48. public String getErrorPath() {
  49. return "/error";
  50. }
  51. }