1、统一异常处理:
1.引入依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <scope>provided</scope> </dependency>
2.Controller:
业务出现异常时调用package com.pp.exception; import com.pp.entity.ResultData; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; @ControllerAdvice public class ExceptionControllerHandler { @ExceptionHandler(Exception.class) @ResponseBody public Object exceptionHandler(HttpServletRequest request,Exception e){ //查看请求是否是ajax请求 String header = request.getHeader("X-Requested-With"); if (header!=null&&header.equals("XMLHttpRequest")){ return new ResultData<>().setCode(ResultData.ResultCodeList.ERROR).setData("服务器繁忙,请稍后再试"); }else { System.out.println("项目出现异常" + e.getMessage()); return new ModelAndView("myerror"); } } }
当用户访问不存在的页面时调用此controller
package com.pp.exception; import org.springframework.boot.web.servlet.error.ErrorController; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletResponse; @Controller public class SystemException implements ErrorController { @Override public String getErrorPath() { return "/error"; } @RequestMapping("/error") public String exception(HttpServletResponse response){ int status = response.getStatus();//获取错误的状态码 switch (status){ case 401:return "401"; case 403: return "403"; case 402: return "402"; case 404: return "404"; } return "myerror"; } }
3.entity:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
package com.pp.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; @Data @AllArgsConstructor @NoArgsConstructor @Accessors(chain = true) public class ResultData<T> { private String code;//错误码 private String msg;//错误信息 private T data;//数据部分 public static interface ResultCodeList{ String OK="200"; String ERROR="500"; } }