`
ZXY_920823
  • 浏览: 24363 次
社区版块
存档分类
最新评论

springmvc处理异常的4种方式

阅读更多
   
springmvc处理异常有三种方式:
1.在一个controller中定义一个方法,用@ExceptionHandler注解标注。(优先级最高)
@ExceptionHandler
public ModelAndView handleException(Exception exception){
    ModelAndView mv = new ModelAndView("error/500");
    mv.addObject("ex",exception);
    return mv;
}

或者
@ExceptionHandler
public String handleException(Exception exception){
    return "error/500";
}

2.全局异常设置(优先级次之)
<!-- 将Controller抛出的异常转到特定View,异常映射处理器 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <!-- 定义异常处理页面用来获取异常信息的变量名,默认名为exception -->
    <!--<property name="exceptionAttribute" value="ex"></property>-->
    <property name="exceptionMappings">
        <props>
            <prop key="java.lang.Throwable">error/500</prop>
        </props>
    </property>
</bean>

3.自定义异常处理(优先级次之)
public class CustomerHandlerExceptionResolver extends AbstractHandlerExceptionResolver{

       public ModelAndView resolveException(HttpServletRequest request,   HttpServletResponse response, Object handler, Exception ex) {
            System.out.println("自定义异常处理器");
            logger = LoggerFactory.getLogger(ex.getClass());
            ResponseStatus responseStatus = AnnotationUtils.getAnnotation(ex.getClass(),       ResponseStatus.class);
            ModelAndView modelAndView = new ModelAndView("error/500");
          //自定义的异常
              if (responseStatus != null) {
                modelAndView.setViewName("error/" + responseStatus.value().value());
              } else {
             //其他异常,做一些其他的处理,如发送错误报警邮件,记录日志
                   logger.error(ex.getMessage(), ex);
             }
            return modelAndView;
       }
}

4.自定义一个异常类,继承RunTimeException(优先级最低)
@ResponseStatus(value = HttpStatus.NOT_FOUND,reason = "No such resource")
public class NotFoundException extends RuntimeException {

}

当抛出我们自定义的异常时,就会构造出相应的状态码,一般我们还是设置SimpleMappingExceptionResolver,来进行统一跳转到错误页面。

最佳实践:还是用全局的SimpleMappingExceptionResolver最好,在jsp里面写日志,当需要进行细粒度的控制时,还是自定义异常解析器为好,其他的自我感觉不好用!如有不正确的,欢迎指正!

5
0
分享到:
评论

相关推荐

    springmvc 异常处理示例

    springmvc异常处理的博文如下: http://blog.csdn.net/dlf123321/article/details/50756003

    springmvc 异常统一处理的三种方式详解.docx

    本篇文章将详细探讨Spring MVC处理异常的三种主要方法:SimpleMappingExceptionResolver、自定义HandlerExceptionResolver以及@ExceptionHandler注解。 1. SimpleMappingExceptionResolver Spring MVC提供了内置的...

    SpringMVC 异常处理-2021-04-11.txt

    异常一层一层的向上抛出,但是开发人员肯定不想要用户看到代码出错,因此需要将异常屏蔽了,SpringMVC提供了异常处理的手段。

    SSM笔记-SpringMVC的异常处理

    SSM笔记-SpringMVC的异常处理,包含了ExceptionHandler注解、ResponseStatusExceptionResolver、DefaultHandlerExceptionResolver、SimpleMappingExceptionResolver的使用和试验

    springmvc异常处理demo.zip

    SpringMVC中异常处理机制,简单案例,里面有详细说明以及博客说明。

    springmvc返回json的全局异常统一处理demo

    springmvc返回json的全局异常统一处理demo,有问题可以留言。

    SpringMVC四种映射方式实例代码

    本实例代码着重讲解了SpringMVC中的四种映射方式以及拦截器的实现,这对于理解和掌握SpringMVC的请求处理机制至关重要。 1. **四种映射方式**: - **通配符映射**:`@RequestMapping("/path/*")`,星号(*)代表任意...

    12SpringMVC异常处理.md

    12SpringMVC异常处理.md

    springMVC3学习(八)--全局的异常处理(源码)

    springMVC3学习(八)--全局的异常处理(源码) 文章地址:http://blog.csdn.net/itmyhome1990/article/details/26286435

    springMVC统一异常处理.mp4

    本视频针对博客内容,讲解springMVC框架中的统一异常处理的知识点和实例,以及500错误和404错误异常处理上的区别,简单易懂,言简意赅。

    Maven+SpringMVC实现统一异常处理

    同时,我们还需要配置HandlerExceptionResolver来处理异常。 ```xml &lt;!-- 配置错误页面 --&gt; &lt;prop key="java.lang.Exception"&gt;error/500 &lt;prop key="java.lang.Throwable"&gt;error/500 ``` 3. ...

    SpringMVC上传下载异常处理

    本文档主要介绍了SpringMVC的ModelAndView机制,使用SpringMVC实现文件上传,下载以及全局异常处理机制

    SpringMVC4零配置

    SpringMVC4支持创建RESTful API,通过`@PathVariable`、`@RequestParam`等注解处理URL中的动态部分和请求参数。这样可以实现资源导向的API设计,符合HTTP协议的最佳实践。 8. **异常处理** 可以通过`@...

    SpringMVC 中的拦截器与异常处理

    在SpringMVC框架中,拦截器(Interceptor)和异常处理是两个重要的概念,它们对于构建健壮、可维护的Web应用程序至关重要。本文将深入探讨这两个主题,并解释它们如何协同工作以提升应用性能和用户体验。 首先,让...

    springmvc4简单例子

    在实际开发中,"springmvc4简单例子"可能还会涉及异常处理、国际化、拦截器、文件上传下载、AJAX交互等更多功能。通过学习和实践这样的例子,你可以逐步掌握Spring MVC 4的基本用法和最佳实践。

    spingmvc+mybatis+统一异常处理机制

    采用springmvc+mybatis,搭建部分大致跟网上其他资料差不多,唯一不同的加入了统一错误处理,为了方便开发人员开发,所有错误码用一张表存在数据库中,然后由应用将整表缓存,缓存采用的spring自带的cache,开发中...

    Beatles9527#StudyNotes#_6SpringMVC全局异常处理1

    SpringMVC处理全局异常在使用Shiro权限控制框架后,如果使用注解在Controller控制访问的角色,如果权限不足,就会抛出Authorization

    spring4+mybatis3+springmvc4实战

    SpringMVC4在SpringMVC3的基础上强化了RESTful支持和JSON处理能力。 Mybatis是一个轻量级的持久层框架,它允许开发者用简单的XML或注解来配置和映射原生信息,将SQL与Java代码分离,以实现更加灵活的数据访问。...

    SpringMVC-13 异常处理

    SpringMVC通过HandlerExceptionResolver接口来处理程序的异常,包括Handler映射、数据绑定和目标方法执行时发生的异常。 主要测试HandlerExceptionResolver的具体实现类的具体用法

Global site tag (gtag.js) - Google Analytics