跟杨春娟学SpringBoot笔记:全局异常处理之@ControllerAdvice加@ExceptionHandler
完成:第一遍
1.全局异常处理之@ControllerAdvice+@ExceptionHandler?
步骤一:创建MyExceptionHandler.java
MyExceptionHandler.java
package com.springboot.demo.SpringBootDemoProject.error;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
//@ControllerAdvice
public class MyExceptionHandler {
/*@ExceptionHandler
public ModelAndView exp(Exception ex) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorInfo", ex.getMessage());
if(ex instanceof NullPointerException) {
modelAndView.setViewName("error/error_null");
}else {
modelAndView.setViewName("error/error_other");
}
return modelAndView;
}*/
//分开处理不同的Exception
@ExceptionHandler(NullPointerException.class)
public ModelAndView exp(Exception ex) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorInfo", ex.getMessage());
modelAndView.setViewName("error/error_null");
return modelAndView;
}
@ExceptionHandler
public ModelAndView exp1(Exception ex) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorInfo", ex.getMessage());
modelAndView.setViewName("error/error_other");
return modelAndView;
}
}
步骤二:在\src\main\resources\templates\error下创建全局错误页面
error_null.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>This is a error page</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
This is error null page.
<p th:text="${errorInfo}"></p>
</body>
</html>
error_other.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>This is a error page</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
This is error other page.
<p th:text="${errorInfo}"></p>
</body>
</html>
404-old.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>This is a error page</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
This is 404 page.
</body>
</html>
500-old.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>This is a error page</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
This is 500 page.
</body>
</html>
步骤三:创建ErrorTestController.java
ErrorTestController.java
package com.springboot.demo.SpringBootDemoProject.error;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("e")
public class ErrorTestController {
@RequestMapping("show")
public String show(ModelMap model) {
String str = null;
str.charAt(0);
/*
* String[] str = {"22", "33"}; String ss = str[2];
*/
return "thymeleaf";
}
}
步骤四:
步骤五: