SpringBoot进行全局异常处理
使用@ExceptionHandler 加@ControllerAdvice 注解
模拟异常发生
@RestController @RequestMapping("/exception") public class ExceptionController { @RequestMapping("/show1") public String showInfo1() { String msg = null; msg.length(); // NullPointerException return "success"; } @RequestMapping("/show2") public String showInfo2() { int a = 0; int b = 100; System.out.println(b / a); //ArithmeicExpetion return "success"; } }
全局异常处理类
@ControllerAdvice public class GlobalException { @ExceptionHandler(value = { NullPointerException.class }) public ModelAndView nullPointerExceptionHandler(Exception e) { ModelAndView view = new ModelAndView(); view.setViewName("error"); view.addObject("error","空指针异常"); return view; } @ExceptionHandler(value = { ArithmeticException.class}) public ModelAndView arithmeticExceptionHandler(Exception e){ ModelAndView view = new ModelAndView(); view.setViewName("error"); view.addObject("error","算数运算异常"); return view; } }
跳转的页面(这里使用了thymeleaf)
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>系统错误页面</h1> <span th:text="${error}"></span> </body> </html>
测试结果: