Exception Rule

Exception

Exception异常处理,是Java的重要特性之一。Exception分为两种,一种是System Exception(系统异常),一种是Application Exception(应用程序异常)

System Exception(系统异常)继承RuntimeException类,不需要显示的catch或者throw

Application Exception(应用程序异常)继承RuntimeException类之外的Exception,必须显示的catch或者throw

(说明: RuntimeException类是Exception类的子类。)

以下的代码throws所有异常。

void func( …) throws Exception{

}

这样的代码,屏蔽了包括系统异常在内的所有异常。在这样的函数中,调用任何有可能抛出异常的代码,也不会有任何编译错误。而且,调用这个函数的代码必须写成如下:

try{

      

       func(..)

      

}catch(Exception e){

}

以上的代码能够catch包括系统异常在内的所有异常,一般只出现测试程序中。这种异常处理方法屏蔽了所有异常。建议显示的抛出特定的应用程序异常。代码如下:

void func( …) throws ServletException{

 // 如果有其它的异常,必须包装成ServletException 抛出

       try{

       }catch(SQLException e){

              throw new ServletException(e);

       }

}

调用这个函数的代码写成如下:

try{

      

       func(..)

      

}catch(ServletException e){

}

// 如果需要catch包括系统异常在内的所有异常,可以在后面加入如下语句。

catch(Exception e){ }

finally

在涉及到资源释放(比如,数据库资源,文件资源)的函数里,函数的出口数目是一个需要考虑的问题。一般的解决方法是,尽量让这种函数只在函数结束处有一个出口。由于逻辑的复杂性,不可能强求做到这一点。可以使用finally机制来控制。

例如,下面的代码

 

void func( ..) throws ServletException{

       if(...)

         return; // won’t go finally block

 

       try{

             

              if(…)

                return; // will go finally block

             

       }catch(SQLException e){

              throw new ServletException(e): // will go finally block

       }catch(IOException e){

              return; // will go finally block

       }finally{

              // release resource

       }

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值