zoukankan      html  css  js  c++  java
  • springmvc之异常处理中ExceptionHanderExceptionResolver

    1、springmvc通过HandlerExceptionResolver处理程序的异常,包括Handler映射、数据绑定以及目标方法执行时发生的异常。

    2、springmvc提供的HandlerExceptionResolver的常用实现类:

    • ExceptionHanderExceptionResolver
    • DefaultHanderExceptionResolver
    • ResponseStatusExceptionResolver
    • SimpleMappingExceptionResolver

    3、DispatchServlet默认装配HanderExceptionResolver

    在java中:

        @ExceptionHandler({RuntimeException.class})
        public ModelAndView handleArithmeticException2(Exception ex) {
            System.out.println("出异常了--->:"+ex);
            ModelAndView mv = new ModelAndView("error");
            mv.addObject("exception",ex);
            return mv;    
        }
        
        @ExceptionHandler({ArithmeticException.class})
        public ModelAndView handleArithmeticException(Exception ex) {
            System.out.println("出异常了:"+ex);
            ModelAndView mv = new ModelAndView("error");
            mv.addObject("exception",ex);
            return mv;    
        }
        
        @RequestMapping("/testExceptionHandlerExceptionReslover")
        public String testExceptionHandlerExceptionReslover(@RequestParam("i") Integer i) {
            System.out.println("result-->"+(10 / i));
            return "success";
        }

    index.jsp

    <a href="testExceptionHandlerExceptionReslover?i=10">testExceptionHandlerExceptionReslover</a>

    success.jsp

        <p>success</p>

    error.jsp

        <h4>error page</h4>
        ${exception}

    启动服务器之后:

    点击:

    将I=10改为i=0并刷新:

    在控制台可看到:

    说明:

    (1)在@ExceptionHandler方法的入参中可以加入Exception类型的参数,该参数即对应发生的异常对象。

    (2)在@ExceptionHandler方法的入参中不能传入Map,若希望将异常信息传到前端页面上,需要使用ModelAndView。

    (3)@ExceptionHandler方法标记的异常有优先级问题。

    (4)@ControllerAdvice:如果在当前Handler中找不到@ExceptionHandler方法标记的出现的异常,则会在@ExceptionHandler标记的类中查找@ExceptionHandler标记的方法来处理异常。

    比如我们新建一个java文件,在里面加入:

    package com.gong.springmvc.test;
    
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.servlet.ModelAndView;
    
    @ControllerAdvice
    public class HandleException {
        @ExceptionHandler({ArithmeticException.class})
        public ModelAndView handleArithmeticException(Exception ex) {
            System.out.println("出异常了:"+ex);
            ModelAndView mv = new ModelAndView("error");
            mv.addObject("exception",ex);
            return mv;    
        }
    }

    仍可以达到相同的效果。

  • 相关阅读:
    Algorithm Gossip (48) 上三角、下三角、对称矩阵
    .Algorithm Gossip (47) 多维矩阵转一维矩阵
    Algorithm Gossip (46) 稀疏矩阵存储
    Algorithm Gossip (45) 费氏搜寻法
    Algorithm Gossip (44) 插补搜寻法
    Algorithm Gossip (43) 二分搜寻法
    Algorithm Gossip (42) 循序搜寻法(使用卫兵)
    Algorithm Gossip (41) 基数排序法
    Algorithm Gossip (40) 合并排序法
    AlgorithmGossip (39) 快速排序法 ( 三 )
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12194453.html
Copyright © 2011-2022 走看看