前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springmvc之异常处理中ExceptionHanderExceptionResolver

springmvc之异常处理中ExceptionHanderExceptionResolver

作者头像
西西嘛呦
发布2020-08-26 10:53:41
4550
发布2020-08-26 10:53:41
举报
文章被收录于专栏:数据分析与挖掘

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

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

  • ExceptionHanderExceptionResolver
  • DefaultHanderExceptionResolver
  • ResponseStatusExceptionResolver
  • SimpleMappingExceptionResolver

3、DispatchServlet默认装配HanderExceptionResolver

在java中:

代码语言:javascript
复制
    @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

代码语言:javascript
复制
<a href="testExceptionHandlerExceptionReslover?i=10">testExceptionHandlerExceptionReslover</a>

success.jsp

代码语言:javascript
复制
    <p>success</p>

error.jsp

代码语言:javascript
复制
    <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文件,在里面加入:

代码语言:javascript
复制
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;    
    }
}

仍可以达到相同的效果。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档