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>