zoukankan      html  css  js  c++  java
  • (十一)springMvc 异常处理


    思路

    springMvc 中,异常一层一层的往上抛,最后抛给 前端控制器,前端控制器内部会去找 全局异常处理器(一个系统只会有一个),进行统一异常处理 ;

    对于运行时异常,捕捉到,就直接提示 未知错误,毕竟谁也不知道运行时会出现什么错误 ;


    自定义异常处理类

    	/**
    	 * 自定义异常类
    	 * @author  An
    	 * @date 2018年9月20日10:52:24
    	 */
    	public class CustomerException extends Exception {
    	    private String message ;
    	    public CustomerException(String message){
    	        super(message) ;
    	        this.message = message ;
    	    }
    	
    	    @Override
    	    public String getMessage() {
    	        return message;
    	    }
    	}
    

    全局异常处理器

    在整个 springMvc 系统里面只有一个!需要我们自己来开发,需要实现 org.springframework.web.servlet.HandlerExceptionResolver 接口 ;

    思路:

    全局异常处理器处理思路:解析出异常类型,判断是自定义异常还是运行时异常,如果是自定义异常则获取异常信息,如果是运行时异常,则显示 未知错误 ;

    public class ExceptionResolver implements HandlerExceptionResolver {
    
        /**
         * 处理异常
         * @param request
         * @param response
         * @param handler 就是处理器对象。发生异常方法的处理器对象
         * @param ex 异常对象
         * @return
         */
        @Override
        public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
           CustomerException customerException = null ;
           if (ex instanceof CustomerException){
               customerException = (CustomerException) ex;
           }else {
               customerException = new CustomerException("位置错误!") ;
           }
    
           ModelAndView modelAndView = new ModelAndView() ;
    //       填充数据
            modelAndView.addObject("customerException",customerException);
    //      绑定视图
            modelAndView.setViewName("error");
            return modelAndView;
        }
    }
    

    配置全局异常处理器

    springMvc.xml 文件中,加载之前写的 全局异常处理类

     <!--全局异常处理类-->
        <bean class="xin.ijava.ssm.exception.ExceptionResolver"/>
    

  • 相关阅读:
    5、面试题-测试用例篇
    4、面试题-技术篇
    3、面试题-测试流程
    2、面试题-接口测试用例
    全屏圆角弹出框
    Jquery的each退出循环
    拖动DIV
    head里面的其他标记
    更新字段
    Python---序列化
  • 原文地址:https://www.cnblogs.com/young-youth/p/11665653.html
Copyright © 2011-2022 走看看