zoukankan      html  css  js  c++  java
  • Springboot异常处理

    一,异常处理

      SpringBoot中对于异常处理提供了五种方式

      1,自定义错误页面

        SpringBoot默认的处理异常机制:SpringBoot默认已经提供了一套处理异常的机制

        一旦程序中出现异常SpringBoot会向/error的url发送请求

        在SpringBoot中提供了一个名为BasicErrorController来处理/error请求

        然后跳转到默认显示异常的页面来展示异常信息

          如果我们需要将所有的异常统一跳转到自定义的错误页面

        需要在src/main/resources/templates目录下创建error.html页面

        注意:页面名称必须叫error

      实例:

        

          默认报错页面

        

        编写html页面

        

          

      2,使用@ExceptionHandler注解  可以把不同的错误分开处理  也可以同时处理多个错误  注意:必须和能产生错误的方法在一个类中

          

          

          

      3,通过@ControllerAdvice与@ExceptionHandler注解处理异常  缺点就是全局异常类里面的方法特别多

        3.1创建全局异常类

    /*
    * 全局异常处理类
    * */
    @ControllerAdvice
    public class GlobalException {
        @ExceptionHandler(value={java.lang.NullPointerException.class})
        public ModelAndView nullpointExceptionHandler(Exception e)
        {
            ModelAndView mv=new ModelAndView();
            mv.addObject("err",e.toString());
            mv.setViewName("error1");
            return mv;
        };
    
        @ExceptionHandler(value={java.lang.ArithmeticException.class})
        public ModelAndView arithmeticException(Exception e)
        {
            ModelAndView mv = new ModelAndView();
            mv.addObject("err",e.toString());
            mv.setViewName("error1");
            return mv;
        };
    }

        3.2Controller类

    @Controller
    public class controller {
        /*
        * 空指针异常
        * */
        @RequestMapping("/showInfo")
        public String showInfo()
        {
            String str=null;
            str.length();
            return "ok";
        };
        /*
        * 算数异常
        * */
        @RequestMapping("showInfo2")
        public String showInfo2()
        {
            int i=10/0;
            return "ok";
        };
    }

         

       4,通过SimpleMappingExceptionResolver对象处理异常  但是只能根据异常跳转页面不能传递异常信息   只是根据异常做了映射

        4.1,Controller不变  修改一下异常类

          

    @Configuration
    public class GlobalException2 {
    
        /*
        * 此方法必须返回SimpleMappingExceptionResolver对象
        * */
        @Bean
        public SimpleMappingExceptionResolver getException()
        {
            SimpleMappingExceptionResolver smer = new SimpleMappingExceptionResolver();
            Properties properties = new Properties();
            /*
            * 参数一:异常类型,并且是全名
            * 参数二:视图名称
            * */
            properties.put("java.lang.NullPointerException","error2");
            properties.put("java.lang.ArithmeticException","error3");
            smer.setExceptionMappings(properties);
            return smer;
        };
    }

      5,自定义HandlerExceptionResolver

        5.1Controller不变  修改异常类

    /*
    * 必须要实现HandlerExceptionResolver接口
    * */
    @Configuration
    public class GlobalException3 implements HandlerExceptionResolver {
        @Override
        public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
            ModelAndView mv = new ModelAndView();
            //判断不同异常类型,做不同的视图跳转
            if(e instanceof NullPointerException)
            {
                mv.setViewName("error4");
    
            };
            if(e instanceof ArithmeticException)
            {
                mv.setViewName("error5");
            };
            mv.addObject("err",e.toString());
            return mv;
        }
    }
  • 相关阅读:
    图片懒加载
    浅谈javascript的函数节流
    js字符串常用方法详解
    js数组详解
    thinkphp3.2 批量添加数据
    openssl证书及配置
    手机访问PC端
    mui框架(三)
    mui框架(二)
    mui框架(一)
  • 原文地址:https://www.cnblogs.com/yz-bky/p/12818029.html
Copyright © 2011-2022 走看看