JavaWeb学习之路——SpringBoot 中几种异常处理方法(四)

    xiaoxiao2022-07-07  191

    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>

     

    最新回复(0)