异常处理_SimpleMappingExceptionResolver

1)如果希望对所有异常进行统一处理,可以使用 SimpleMappingExceptionResolver,它将异

常类名映射为视图名,即发生异常时使用对应的视图报告异常

1实验代码

  • 增加页面链接

<a href=”testSimpleMappingExceptionResolver?i=1″>testSimpleMappingExceptionResolver</a>

  • 增加控制器方法

@RequestMapping(“/testSimpleMappingExceptionResolver”)

public String testSimpleMappingExceptionResolver(@RequestParam(“i”) int i){

System.out.println(“testSimpleMappingExceptionResolver…”);

String[] s = new String[10];

System.out.println(s[i]);

return “success”;

}

  • 出现异常情况:参数i的值大于10

  • 配置异常解析器:自动将异常对象信息,存放到request范围内

<!– 配置SimpleMappingExceptionResolver异常解析器 –>

<bean id=”simpleMappingExceptionResolver”

class=”org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”>

<!– exceptionAttribute默认值(通过ModelAndView传递给页面):

exception   ->  ${requestScope.exception}

public static final String DEFAULT_EXCEPTION_ATTRIBUTE = “exception”;

–>

<property name=”exceptionAttribute” value=”exception”></property>

<property name=”exceptionMappings“>

<props>

<prop key=”java.lang.ArrayIndexOutOfBoundsException”>error</prop>

</props>

</property>

</bean>

error.jsp

<%@ page language=”java” contentType=”text/html; charset=UTF-8″

pageEncoding=”UTF-8″%>

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”

“http://www.w3.org/TR/html4/loose.dtd“>

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>

<title>Insert title here</title>

</head>

<body>

<h3>Error Page</h3>

${exception }

${requestScope.exception }

</body>

</html>

  • 源码分析

SimpleMappingExceptionResolver    L187 L339

@Override

protected ModelAndView doResolveException(HttpServletRequest request,

HttpServletResponse response,Object handler, Exception ex) {

// Expose ModelAndView for chosen error view.

String viewName = determineViewName(ex, request);

if (viewName != null) {

// Apply HTTP status code for error views, if specified.

// Only apply it if we’re processing a top-level request.

Integer statusCode = determineStatusCode(request, viewName);

if (statusCode != null) {

applyStatusCodeIfPossible(request, response, statusCode);

}

return getModelAndView(viewName, ex, request);

}else {

return null;

}

}

/**

Return a ModelAndView for the given view name and exception.

* <p>The default implementation adds the specified exception attribute.

* Can be overridden in subclasses.

* @param viewName the name of the error view

* @param ex the exception that got thrown during handler execution

* @return the ModelAndView instance

* @see #setExceptionAttribute

*/

protected ModelAndView getModelAndView(String viewName, Exception ex) {

ModelAndView mv = new ModelAndView(viewName);

if (this.exceptionAttribute != null) {

if (logger.isDebugEnabled()) {

logger.debug(“Exposing Exception as model attribute ‘” + this.exceptionAttribute + “‘”);

}

mv.addObject(this.exceptionAttribute, ex);

}

return mv;

}

原文链接:http://www.atguigu.com/jsfx/10316.html

java开发之异常处理_SimpleMappingExceptionResolver相关推荐

  1. java开发中异常处理的几种手段

    目录 一.枚举类定义错误码和错误描述 二.枚举类只定义错误码,错误描述放在配置文件中 三.使用@RestControllerAdvice 四.将错误码和错误描述放在配置中心 一.枚举类定义错误码和错误 ...

  2. Java开发知识之Java的异常处理

    Java开发知识之Java的异常处理 一丶异常概述 在讲解异常之前,我们要搞清楚.什么是异常. 通俗理解就是我们编写的程序出问题了.进行处理的一种手段. 比如我们的QQ.有的时候就崩溃了.比如出现xx ...

  3. Java:使用 Java 开发的一个异常处理框架

    Java:使用 Java 开发的一个异常处理框架 参考文章: (1)Java:使用 Java 开发的一个异常处理框架 (2)https://www.cnblogs.com/happyframework ...

  4. 关于数据库中NULL的描述,下列哪些说法符合《阿里巴巴Java开发手册》

    关于数据库中NULL的描述,下列哪些说法符合<阿里巴巴Java开发手册>:答案在文末 A. NULL=NULL的返回结果为true. B. NULL与任何值的比较结果都为NULL. C. ...

  5. 【转】Java中关于异常处理的十个最佳实践

    原文地址:http://www.searchsoa.com.cn/showcontent_71960.htm 导读:异常处理是书写强健Java应用的一个重要部分,Java许你创建新的异常,并通过使用 ...

  6. 留着肯定有用,让你脱胎成技术大神的JAVA开发技巧

    作为当前全球最热门之一的开发语言,Java正在野蛮地扩张自己的领土,从单片机到安卓,随处可见Java的身影.随着越来越多的人加入Java开发环境,阶级分化也逐渐明显.大神和菜鸟,往往只有一线之隔,今天 ...

  7. java try catch_异常处理,JAVA中异常处理的介绍

    异常处理的介绍 在Java程序的运行过程中,如果Java虚拟机检测出一个无法执行的操作,就会产生运行时错误(runtime error) 在Java中,运行时错误会作为异常来抛出. 抛出的异常是一个对 ...

  8. Java开发面试问题,牛逼轰轰!

    什么是 Java 程序的主类?应用程序和小程序的主类有何不同? Java 应用程序与小程序之间有哪些差别? 字符型常量和字符串常量的区别 构造器 Constructor 是否可被 override? ...

  9. java object转list_这份Java开发规范,让你100%受益!

    今天跟大家分享下Java开发规范的知识. 基于阿里巴巴JAVA开发规范整理: https://github.com/alibaba/p3c 1 命名风格 [强制]类名使用 UpperCamelCase ...

最新文章

  1. python qq模块_Python的nonebot模块如何获取命令发出者的QQ?
  2. 段的创建表user_segments
  3. vue-cli 3.0 怎么配置 webpack.ProvidePlugin
  4. netty在项目中实际使用_聚合氯化铝在实际使用中的用法和用量
  5. Jeecg Maven本地仓库下载地址
  6. linux操作系统分区图解,图解磁盘分区介绍(超经典)
  7. 菜鸟裹裹电脑版_天猫淘宝“基本盘”放缓,阿里云、菜鸟爆发,马云迎来拐点?...
  8. python开发k8s管理平台_运维开发和k8s运维如何选择,请各位大神指导一下?
  9. 9款很棒的网页绘制图表JavaScript框架脚本
  10. 遗传算法原理以及matlab代码
  11. C primer plus 第六版pdf下载
  12. 记录一次破解某加固APP的修改纪录
  13. [CodeComplete]创建一个函数需要理由吗
  14. oracle ogg操作日志,对一段Oracle GoldenGate (OGG) 传输过程日志(.rpt文件)的解释...
  15. android 自由落体,Android动画之属性动画1 自由落体
  16. BouncyCastle库
  17. OpenCV角点检测源代码分析(Harris和ShiTomasi角点)
  18. 用Python写一个拼音输入法
  19. 链家租房市场分析(R爬虫、数据可视化)
  20. 网站页面静态化(一)初识

热门文章

  1. 学校计算机房的布线注意要点,学校机房布线要点探析
  2. 类的成员函数指针和静态成员函数指针 调用成员函数***
  3. JVM调优之 -Xms -Xmx -Xmn -Xss
  4. Zygote启动及其作用
  5. 《剑指offer》刷题——【链表】从尾到头打印链表
  6. 最大流、最小费用最大流【模板】
  7. 7-108 奇数偶数-zzuli
  8. labview问题集锦
  9. Apache Kudo: 1.0版和未来 [session]
  10. git tag 打标签(我看过最透彻的文章)