SpringMVC利用注解实现异常处理

        在项目中如何处理出现的异常,以前通常的作法是继承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配置文件来实现。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值