编写一个全局异常处理器 ExceptionHandler.java
@RestControllerAdvice public class ExceptionHandler { @org.springframework.web.bind.annotation.ExceptionHandler(value = Exception.class) public ModelAndView error(Exception e, HttpServletRequest request) { System.out.println("捕获到异常:"+e.getMessage()); System.out.println("url : "+request.getRequestURI()); ModelAndView modelAndView=new ModelAndView(); modelAndView.setViewName("error.html"); return modelAndView; } // @org.springframework.web.bind.annotation.ExceptionHandler(value = Exception.class) // public String error(Exception e, HttpServletRequest request) { // System.out.println("捕获到异常:"+e.getMessage()); // System.out.println("url : "+request.getRequestURI()); // return e.getMessage(); // } }
如上面的异常处理器,会拦截到所有异常,并进行处理
1、@RestControllerAdvice 或者 @ControllerAdvice 注解 ,表明是当前类是全局异常处理器,如果是返回json数据 则用 RestControllerAdvice
2、@ExceptionHandler(value=Exception.class) 里面的 value 是拦截的异常类型,可以自己进行配置
3、返回数据可以是一个页面也可以是自定义的数据
4、返回自定义异常界面,需要引入thymeleaf依赖,同时在 resource 目录下新建templates,并新建error.html
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>