`

SpringMVC学习(10):异常处理

阅读更多

在项目中如何处理出现的异常,在每个可能出现异常的地方都写代码捕捉异常?这显然是不合理的,当项目越来越大是也是不可维护的。那么如何保证我们处理异常的代码精简且便于维护呢?这就是本篇要讲的内容—>异常处理。

在Spring MVC中我们可以通过以下2中途径来对异常进行集中处理:

一.继承HandlerExceptionResolver接口实现自己的处理方法,如:

public class MyHandlerExceptionResolver implements HandlerExceptionResolver {   
  
    @Override  
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {   

        //添加自己的异常处理逻辑,如日志记录等        

         // TODO Auto-generated method stub   
        return new ModelAndView("exception");   
    }   
  
}

 然后在项目的配置文件中添加:

<bean id="exceptionResolver" class="所在包名.MyHandlerExceptionResolver"/>

这样就完成了异常的捕捉和处理。

 

二.我们介绍了第一种捕捉处理异常方式,但是第一种方式需要在配置文件中进行配置,有的时候我们会觉得配置文件内容太多太乱,那么我们就可以借助@ExceptionHandler注解来实现零配置的异常捕捉和处理。

 

首先,在我们项目的包com.demo.web.controllers中为controller建立一个父类BaseController,内容如下:

package com.demo.web.controllers;

import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.ExceptionHandler;

public abstract class BaseController {  

    @ExceptionHandler
    public String exception(HttpServletRequest request, Exception e) {  
          
      //添加自己的异常处理逻辑,如日志记录   
        request.setAttribute("exceptionMessage", e.getMessage());  
          
        // 根据不同的异常类型进行不同处理
        if(e instanceof SQLException) 
            return "testerror";   
        else
            return "error";  
    }  
    
}

 其次,修改项目中HelloWorldController让它继承于BaseController以便进行测试:

public class HelloWorldController extends BaseController{
    //...内容省略
}

 然后,修改HelloWorldController 中的index方法,使其抛出异常,看能不能正常捕捉:

//@AuthPassport
@RequestMapping(value={"/index","/hello"})
public ModelAndView index() throws SQLException{
    
    throw new SQLException("数据库异常。");
    
    /*ModelAndView modelAndView = new ModelAndView();  
    modelAndView.addObject("message", "Hello World!");  
    modelAndView.setViewName("index");  
    return modelAndView;*/
}

 最后,在views文件夹中添加testerror.jsp视图来显示错误信息:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>error!</title>
</head>
<body>
    ${exceptionMessage}
</body>
</html>

 

运行项目:

1

可以看到异常已经被捕捉并显示,这样只要把我们的其它的Controller全部继承于BaseController就能实现异常的集中捕捉和处理了。

代码下载:http://pan.baidu.com/s/1c0eTseG

 

http://www.cnblogs.com/liukemng/p/3753117.html

分享到:
评论

相关推荐

    SpringMVC精品资源--深入解析SpringMVC核心原理:从手写简易版MVC框架开始(SmartMvc).zip

    在这些文件中,我们需要定义视图解析器、拦截器、数据绑定、异常处理等关键设置。 4. **请求处理流程** 一个典型的SpringMVC请求处理流程包括:用户发送HTTP请求 -&gt; DispatcherServlet拦截 -&gt; HandlerMapping找到...

    超级详细SpringMVC学习资料

    5. AOP(面向切面编程):结合Spring的AOP功能,实现全局异常处理、事务管理等。 6. 国际化:通过LocaleResolver和MessageSource实现多语言支持。 五、实战应用 1. 创建MVC项目:搭建SpringMVC环境,编写Controller...

    Java SpringMVC 学习路线.pdf

    综上所述,SpringMVC的学习路线涵盖了从基础到高级的多个方面,包括框架使用、代码实践、架构理解、组件整合、参数绑定、注解使用、异常处理、数据交互、Restful实现以及拦截器开发等多个知识点,为Java后台开发者...

    SpringMVC学习资料

    7. **异常处理**:通过`@ExceptionHandler`注解,可以在控制器类中定义全局异常处理方法,统一处理运行时异常。 8. **拦截器**:SpringMVC允许自定义拦截器,通过`@InterceptorRegistry`和`HandlerInterceptor`接口...

    SpringMVC学习编程代码

    总的来说,"SpringMVC学习编程代码"提供的资源包括了SpringMVC的核心概念和实际应用,如配置文件、Controller、视图解析、数据绑定、异常处理以及拦截器的使用。通过这个项目,开发者可以深入理解SpringMVC的工作...

    springMVC学习

    SpringMVC 学习指南 SpringMVC 是 Spring 框架中的一个 web 组件,它提供了丰富的功能来构建稳健的 web 应用。 SpringMVC 的核心思想是基于每个逻辑和功能是高可配置的架构和设计的。下面是 SpringMVC 的学习指南:...

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

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

    springMvc学习相关jar包

    14. **异常处理**:可以通过 @ExceptionHandler 注解处理特定的异常,或者全局异常处理器来统一处理所有未捕获的异常。 15. **异步处理**:Spring MVC 提供了异步请求处理功能,可以返回 Callable 或 ...

    SpringMVC学习文档

    **SpringMVC学习文档概述** SpringMVC是Spring框架的一个模块,主要负责处理Web应用程序的请求和响应。它是一个基于模型-视图-控制器(MVC)架构模式的轻量级Java Web开发框架,旨在简化Web应用开发并提高可测试性...

    SpringMVC-Study:SpringMVC学习

    通过研究SpringMVC-Study项目,你可以深入理解如何配置和使用SpringMVC,包括注解驱动的编程、RESTful API设计、异常处理、视图解析、国际化支持以及使用Spring Data JPA等高级特性。此外,还可以学习如何结合Spring...

    SpringMVC学习(一)——SpringMVC入门小程序

    在“SpringMVC学习(一)——SpringMVC入门小程序”中,我们首先会接触到SpringMVC的基本概念。这通常包括以下几个核心组件: 1. **DispatcherServlet**:这是SpringMVC的前端控制器,负责接收HTTP请求,并根据配置...

    SpringMVC 学习总结

    在实际应用中,SpringMVC 还支持拦截器、异常处理、本地化和主题等功能,可以提供更强大的功能和灵活性。此外,SpringMVC 可以与其他 Spring 模块(如 Spring AOP、Spring Data 等)集成,构建更复杂的业务应用。

    springMVC学习版源码

    通过"SpringMVC学习版源码",初学者可以详细查看这些组件的实现,理解它们如何协同工作,从而加深对SpringMVC的理解。MySpringMVC可能是该项目的主模块,包含了整个SpringMVC应用的配置、控制器、模型、视图等组件。...

    SpringMVC学习指南

    SpringMVC是Spring框架的一个重要模块,用于构建Web应用程序的后端控制器。它是一个轻量级的MVC..."SpringMVC学习指南"这个压缩包中的PDF文档,很可能会涵盖这些内容的详细讲解,是学习和提升SpringMVC技能的好资源。

    SpringMVC学习笔记.zip

    SpringMVC是Java web开发中一个非常重要的框架,它基于模型-视图-控制器(Model-View-Controller)设计模式...这份“SpringMVC学习笔记”包括了从基础到进阶的全面内容,旨在帮助读者从零开始掌握SpringMVC的各个方面。

    SpringMVC项目:ALL

    JavaWeb框架——SpringMVC学习过程前端控制器、视图解析器@Controller@RequestMapping(value、method、params)获取请求参数域对象共享数据视图前缀RESTFul文件上传下载拦截器Interceptor异常处理Excepton

    springmvc全面的学习资料

    - **全局异常处理**:设置 `@ExceptionHandler` 处理特定异常,或者配置 `@ControllerAdvice` 进行全局异常捕获。 - **错误页面**:配置错误页面,提供友好的错误信息展示。 6. **RESTful API** - **REST 原则**...

    SpringMVC学习笔记与项目源码

    内容概要:超详细SpringMVC笔记,包含初始SpringMVC,请求与响应,REST风格,SSM整合,表现层数据封装,异常处理器,项目异常处理方案,前后台联调,拦截器等知识点适合人群:学习过Spring课程的人群,初步理解框架...

    springMVC学习--基本的几个例子

    在“springMVC学习--基本的几个例子”这个主题中,我们将深入探讨SpringMVC的基础配置以及几个关键示例。 1. **SpringMVC基本配置**: - **web.xml配置**:这是SpringMVC应用的入口点,我们需要配置...

    SpringMVC学习学习笔记

    1.2.3 借助`@ControllerAdvice`实现全局异常处理 1.3 参数绑定与处理 SpringMVC的强大之处在于其参数绑定能力,可以从HTTP请求中自动解析参数到控制器方法的参数上: 1.3.1 简单数据类型如int、String等可以直接...

Global site tag (gtag.js) - Google Analytics