spring MVC异常捕获机制

原创 2016年05月30日 15:24:55

spring MVC异常捕获机制

spring MVC 提供了异常捕获机制

org.springframework.web.servlet.handler.SimpleMappingExceptionResolver

可以针对不同的异常,进入不同的视图,配置如下:

<!--定义异常处理页面-->
    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                <prop key="org.springframework.transaction.CannotCreateTransactionException">dbNotConnected</prop>
                <prop key="org.hibernate.exception.JDBCConnectionException">dbNotConnected</prop>
                <prop key="java.sql.SQLException">dbNotConnected</prop>
                <prop key="java.net.ConnectException">dbNotConnected</prop>
            </props>
        </property>
    </bean>

如上,只要是连接数据库失败的异常,均显示视图:dbNotConnected

SimpleMappingExceptionResolver核心逻辑

通过异常类名,获取视图

为什么视图名没有jsp后缀

因此此时的视图路径的处理逻辑与常规的控制器相同,即:
视图路径

使用注解

你也可以使用有注解@ExceptionHandler 的方法.
当在一个控制器里面声明的时候,该方法将会应用于该控制器(及其子类)中被@RequestMapping注解的方法抛出的异常.
当然,你也可以在@ControllerAdvice注解的class中,那么该方法将对所有控制器中@RequestMapping 方法抛出的异常.
spring mvc 官网文档:
You can do that with @ExceptionHandler methods. When declared within a controller such methods apply to exceptions raised by @RequestMapping methods of that contoroller (or any of its sub-classes). You can also declare an @ExceptionHandler method within an @ControllerAdvice class in which case it handles exceptions from @RequestMapping methods from any controller. The @ControllerAdvice annotation is a component annotation, which can be used with classpath scanning. It is automatically enabled when using the MVC namespace and the MVC Java config, or otherwise depending on whether the ExceptionHandlerExceptionResolver is configured or not. Below is an example of a controller-local @ExceptionHandler method:

@Controller
public class SimpleController {


  // @RequestMapping methods omitted ...


  @ExceptionHandler(IOException.class)
  public ResponseEntity<String> handleIOException(IOException ex) {

    // prepare responseEntity

    return responseEntity;
  }

}

Spring4.1新特性——异步调度和事件机制的异常处理

Spring 4.1对异步调用提供了AsyncResult及SuccessCallback、FailureCallback、和异常处理的支持;对事件调度也提供了相应的异常处理器。   1、事件调度异常...
  • qwe6112071
  • qwe6112071
  • 2016年03月14日 19:30
  • 1492

springmvc 自定义异常处理机制

本篇文章,我们讲解如何在springmvc中自定义异常处理机制,本文只是讲解一些基础的配置和用法,偏实用型 首先,我们看一下错误页面结构: 接下来,我们讲解具体的配置流程 1、首先,我们需要定义异...
  • u012195899
  • u012195899
  • 2016年09月08日 16:36
  • 1931

SpringMVC:异常处理机制与自定义异常处理

SpringMVC 异常处理
  • qq_18675693
  • qq_18675693
  • 2016年08月25日 20:01
  • 262

Spring统一异常处理

一、异常 异常,为我们处理非正常的业务流程提供了很好的解决方案。异常机制给你的代码可读行、可维护性带来了好处,同时,程序的健壮性也得到了增强。当然,异常也不是万能的,在有些项目中并不适用,比如:纯算...
  • na_tion
  • na_tion
  • 2014年06月01日 19:48
  • 3353

异常捕获机制

异常捕获机制
  • sinat_27180563
  • sinat_27180563
  • 2017年09月12日 22:24
  • 62

JAVA中的异常捕捉机制

第 十五 章 Java的“ 异 常” “ 异 常” 指 的 是 程 序 运 行 时 出 现 的 非 正 常 情 况。 在 用 传统 的 语 言 编 程 时, 程 序 员 只 能 通 过 函 数 的 返...
  • hanpoyangtitan
  • hanpoyangtitan
  • 2006年12月20日 08:37
  • 961

struts2 进阶--异常捕获机制

在SpringMvc中有自己的异常处理机制,struts2当然会有此功能,主要是在struts.xml中配置: class为我们自己实现的bean,自己实现的类需要实现接口:Acti...
  • believer123
  • believer123
  • 2014年04月20日 20:40
  • 1060

18、Spring MVC 之 HTTP caching support

一个好的HTTP缓存策略可以显著的提高一个web应用的性能以及客户体验。HTTP响应头'Cache-Control',条件头'Last-Modified'以及'ETag'通常负责这个....
  • u012410733
  • u012410733
  • 2016年11月07日 20:49
  • 1385

Spring Mvc那点事---(7)Spring Mvc @Autowired注解

Spring中的类中定义的变量,方法,构造函数通过标注@Autowired注解可以从配置文件中找到相应的bean,完成自动装配的工作。默认情况下,@Autowired是按类型来匹配相应的bean,也可...
  • zx13525079024
  • zx13525079024
  • 2016年05月17日 21:54
  • 945

spring4 mvc 快速入门 - spring boot or not?

spring mvc 简洁易学。但自从 spring 4 开始,案例都采用 spring boot,无论老鸟菜鸟都懵了啊。本文介绍 mvc 的框架原理,使用简单案例分别使用spring boot 容器...
  • pmlpml
  • pmlpml
  • 2016年12月02日 20:49
  • 3943
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring MVC异常捕获机制
举报原因:
原因补充:

(最多只允许输入30个字)