Spring Boot(三)
错误处理
1.自定义处理异常,返回指定界面
controller出现错误的方法中:
@RequestMapping("/error")
public String error() {
String str=null;
str.length();
return "test";
}
自定义错误页面.html中:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
出错了
<span th:text="${error}"></span>
</body>
</html>
2.捕获异常,ExceptionHandler 处理方法
方法中出现异常
@RequestMapping("/error")
public String error() {
String str=null;
str.length();
return "test";
}
1)Handler处理器ExceptionHandler捕获指定异常
@ExceptionHandler(value = {java.lang.NullPointerException.class})
public ModelAndView excuteException(Exception e){
ModelAndView mv=new ModelAndView();
mv.addObject("error",e.toString());
mv.setViewName("error1");
return mv;
}
2)跳转至error1视图
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
error1界面
<span th:text="${error}"></span>
</body>
</html>
3.全局异常处理——SimpleMappingExceptionResolver类
1)通过创建一个类,添加@Configuration+@Bean注解方式可以让springboot启动时注册这个bean
SpringBoot启动时加载这个bean,发生指定错误返回指定界面
@Configuration
public class GlobalException {
@Bean
public SimpleMappingExceptionResolver getExceptionResolver(){
SimpleMappingExceptionResolver resolver=new SimpleMappingExceptionResolver();
Properties mappings=new Properties();
/*
* 参数一:异常的类型,异常类型的全名
* 参数二:视图名称
* */
mappings.put("java.lang.NullPointerException","error1");
resolver.setExceptionMappings(mappings);
return resolver;
}
}
2)出现错误方法
@RequestMapping("/error")
public String error() {
String str=null;
str.length();
return "test";
}
4.自定义异常类——HandlerExceptionResolver
1)实现HandlerExceptionResolver接口里面的方法
@Configuration
public class GlobalException implements HandlerExceptionResolver {
/*对resolveException对象进行错误类型判断*/
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
ModelAndView mv=new ModelAndView();
if (e instanceof NullPointerException){
System.out.println("java.lang.NullPointerException");
mv.setViewName("test");
}
mv.addObject("error",e.toString());
return mv;
}
}
2)Controller里面出现异常的方法
@RequestMapping("/error")
public String error() {
String str=null;
str.length();
return "test";
}
3)出现指定错误,返回指定视图html
test.html视图
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
出错了
<span th:text="${error}"></span>
</body>
</html>