美文网首页
springMVC异常处理

springMVC异常处理

作者: _FireFly_ | 来源:发表于2020-11-04 11:46 被阅读0次
    SpringMVC异常处理.jpg

    异常的处理

    
        1.自定义一个异常类MyException   将所有的异常都统一捕获 变成一个唯一的异常 交给总管
        2.自定义一个异常处理类(处理异常 做转发 响应) 实现规则
        3.需要做一个配置 告知Spring帮我们将自定义的异常处理类管理起来
    
    

    自定义异常

    
    package exception;
    
    /**
     * 他是一个普通自定义异常
     */
    public class MyException extends RuntimeException {
    
        private String message;
    
        public MyException(){}
        public MyException(String message){
            this.message = message;
        }
    
        @Override
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    }
    

    自定义的异常处理类

    package exception;
    
    import org.springframework.stereotype.Component;
    import org.springframework.web.servlet.HandlerExceptionResolver;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * 这是一个自定义的异常处理类
     * 原来的小总管不会帮我们处理
     * 我们自己写类  自己定义处理规则
     * 将这个类交个Spring管理
     */
    @Component
    public class ExceptionResolver implements HandlerExceptionResolver {
    
        @Override
        public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
            //1.验证一下捕获的异常是不是刚才我们抛出的那个
            if(e instanceof MyException){
                //2.证明Controller以及后面的处理确实产生了问题
                //  但是还不想让用户看到
                ModelAndView mv = new ModelAndView();
                mv.addObject("errorMessage",e.getMessage());
                mv.setViewName("error.jsp"); //跳转到自定义的错误页,此页面用户可见
                return mv;
            }
            return null;
        }
    }
    
    

    当controller中出现异常时,使用自定义异常进行捕获

    @SessionAttributes("username")   //将数据存入session作用域中
    @Controller
    public class UserController {
        @RequestMapping("testException.do")
        public String testException(){
            System.out.println("controller执行啦");
            //1.字符集
            //2.接收参数(参数列表)
            //3.找寻业务层方法处理逻辑------>可能会产生异常
            try {
                String s = null;
                //s.length();//NullPointerException
            } catch (Exception e){
                e.printStackTrace();//打印后台开发人员可以看到    异常记录在文件 日志
                throw new MyException("服务端业务层产生问题啦");
            }
            //4.正常的响应
            return "TestException.jsp";
        }
    }
    

    相关文章

      网友评论

          本文标题:springMVC异常处理

          本文链接:https://www.haomeiwen.com/subject/zaxgvktx.html