码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC利用注解实现异常处理

时间:2015-01-17 10:02:52      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:web   spring mvc   异常处理   

        在项目中如何处理出现的异常,以前通常的作法是继承Exception或实现Runnable接口来封装自定义异常,然后在项目代码中通过try...catch语句块来捕获到出现的异常,封装到我们自己定义的异常类中。如果项目中使用的SpringMVC框架的话,这里介绍另外一种也比较方便的异常处理方法,本人还是比较喜欢这种处理方式。这里用到的是ExceptionHandler这个注解。
1、首先新建一个名为BaseController的抽象类;
public abstract class BaseController {
     @ExceptionHandler
    public String exception(HttpServletRequest request, Exception e) { 
        // 根据不同的异常类型进行不同处理
        if(e instanceof SQLException) {
           String s = "数据库异常" ;
            request.setAttribute( "exceptionMessage", s);
            return "error";     
        }else if(e instanceof IOException){
           String s = "IO异常";
            request.setAttribute( "exceptionMessage", s);
            return "error";     
        }
        else return "error"
    }
}
       该方法需要定义在Controller内部,然后创建一个方法并用@ExceptionHandler注解来修饰用来处理异常,这个方法基本和 @RequestMapping修饰的方法差不多,只是可以多一个类型为Exception的参数,@ExceptionHandler中可以添加一个或多个异常的类型,如果为空的话则认为可以触发所有的异常类型错误,返回值为视图名。 
2、以后让每个controller类继承定义的BaseController即可;

@Controller
@RequestMapping(value="/login" )
public class LoginController extends BaseController{
     private Logger logger = Logger.getLogger(LoginController.class);
     private JsonGenerator jsonGenerator = null;
     @Autowired
     IUserService userService;
     @RequestMapping(value= "/login")
     public String login() throws Exception{
            logger.info( "login....");
            //这里模拟抛出一个SQL异常信息
            throw new SQLException();
     }
}
3、最后定义一个error.jsp页面
<%@ page language ="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
     <body >
     ${exceptionMessage}
     </body >
</html>
运行效果:
技术分享
技术分享
当然如果习惯用配置文件的伙伴,也可以通过Spring配置文件来实现。



SpringMVC利用注解实现异常处理

标签:web   spring mvc   异常处理   

原文地址:http://blog.csdn.net/chonggaoing/article/details/42803299

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!