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 @Transactional注解方式事务失效的解决办法

前文提到,最新换了框架,新项目用SpringMVC + Spring JdbcTemplate。搭框架时,发现了一个事务无法正常回滚的问题,记录如下: 首先展示问题: Spring app...

Spring的DAO异常-你可能忽视的异常

Spring的DAO框架没有抛出与特定技术相关的异常,例如SQLException或HibernateException,抛出的异常都是与特定技术无关的org.springframework.dao....

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

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

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

必读

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

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

黑马程序员——C#中的异常捕获机制try-catch

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------   因为学过C语言的关系,再看C...

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

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

Android全局异常捕获机制

安卓异常整体解决方案,从异常捕获、到异常日志写入、到异常上报等。。

异常捕获机制中的return

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

黑马程序员--异常捕获机制

------- Windows Phone 7手机开发、.Net培训、期待与您交流! ------- 异常捕获机制 C#的异常处理所用到关键字   Try:用于检查发生的异常,并帮助发送...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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