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;
  }

}

使用Spring MVC统一异常处理实战

1 描述  在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦...

子div设置浮动后不能撑开父亲div

一个Div包含了多个子Div,并且子Div使用了浮动后,父Div确不能被撑开,如下图: 部分代码如下: 1 style> 2   #div1{border:1px solid red;float:...

前端人员必看CSS命名规范

作为前端的设计人员,对于CSS的接触,就像吃饭一样。所以CSS命名规范 命名是 前端人员必看的。 文章整理了Web前端开发中的各种CSS规范,包括文件规范、注释规范、命名规范、书写规范、测试规范...

从源码角度分析Android系统的异常捕获机制是如何运行的

我们在开发的时候经常会遇到各种异常,当程序遇到异常,便会将异常信息抛到LogCat中,那这个过程是怎么实现的呢? 我们以一个例子开始: import android.app.Activity; i...

C#中的异常捕获机制(try catch finally)

必读
  • XPY567
  • XPY567
  • 2016年07月01日 10:06
  • 294

C#中的异常捕获机制(try catch finally)

C#中的异常捕获机制(try catch finally) //转自:http://blog.csdn.net/zevin/article/details/6901489 一、C#的异常...

异常捕获机制中的return

查了很多资料,大家对于java中异常捕获机制的return说法很多,下面总结自己一些遇到的情况 1.finally中没有return如下 public class Test{ publi...

C#中的异常捕获机制(try catch finally)

转载自:http://blog.csdn.net/zevin/article/details/6901489 一、C#的异常处理所用到关键字 try 用于检查发生的异常,并帮助发送任何可能的异...

C#中的异常捕获机制(try catch finally)

C#中的异常捕获机制(try catch finally) 标签: c#exception数学计算classsystemc 2011-10-24 18:45 30213人阅读 评论(4) ...

Android全局异常捕获机制

安卓异常整体解决方案,从异常捕获、到异常日志写入、到异常上报等。。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring MVC异常捕获机制
举报原因:
原因补充:

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