【第22期】观点:IT 行业加班,到底有没有价值?

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

}
版权声明: 举报

相关文章推荐

SpringMVC利用注解实现异常处理

在项目中如何处理出现的异常,以前通常的作法是继承Exception或实现Runnable接口来封装自定义异常,然后在项目代码中通过try...catch语句块来捕获到出现的异常,封装到我们自己定义的异...

Spring-MVC开发之全局异常捕获全面解读

异常,我们一定要捕获一切该死的异常,宁可错杀一千也不能放过一个!产品上线后的异常更要命,一定要屏蔽错误内容,以免暴露敏感信息!       在用Spring MVC开发WEB应用时捕获全局异常的方法基...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

关于Spring事物 异常捕捉之后处理方式

最近遇到了事务不回滚的情况,我还考虑说JPA的事务有bug? 我想多了.......     为了打印清楚日志,很多方法我都加tyr catch,在catch中打印日志。但是这边情况来了,当这个方法...

IDEA跑Tomcat异常

IDEA跑Tomcat异常 具体异常如下 Artifact :war exploded: Server is not connected. Deploy is not avail 根据...

java异常多级捕获

public static void main(String[] args){ NoBindingTest n = new NoBindingTest(); try{ ...

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

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

整合Spring MVC,mybatis,hibernate,freemarker框架实现的自定义注解Validator验证机制实现对敏感词过滤的代码分享

 原创整理不易,转载请注明出处:整合Spring MVC,mybatis,hibernate,freemarker框架实现的自定义注解Validator验证机制实现对敏感词过滤的代码分享 代码下载地址:<a href="http://www.zuidai
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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