首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 程序开发 > JAVA专栏 > 正文
  • Java程序异常处理的特殊情况
      2007-6-12  来源:网络资源  编辑:Jsbulo  热度:

      1、不能在finally块中执行return,continue等语句,否则会把异常“吃掉”;

      2、在try,catch中如果有return语句,则在执行return之前先执行finally块

      请大家仔细看下面的例子:

    以下是引用片段:
    public class TryTest { 
        public static void main(String[] args) { 
            try { 
                System.out.println(TryTest.test());// 返回结果为true其没有任何异常 
            } catch (Exception e) { 
                System.out.println("Exception from main"); 
                e.printStackTrace(); 
            } 
            doThings(0); 
        } 
     
        public static boolean test() throws Exception { 
            try { 
                throw new Exception("Something error");// 第1步.抛出异常 
            } catch (Exception e) {// 第2步.捕获的异常匹配(声明类或其父类),进入控制块 
                System.out.println("Exception from e");// 第3步.打印 
                return false;// 第5步. return前控制转移到finally块,执行完后再返回(这一步被吃掉了,不执行) 
            } finally { 
                return true; // 第4步. 控制转移,直接返回,吃掉了异常 
            } 
        } 
         
        public static void doThings(int i) 
        { 
         try 
         { 
          if(i==0) 
          { 
           //在执行return之前会先执行finally 
           return; 
          } 
          int t=100/i; 
          System.out.println(t); 
         }catch(Exception ex) 
         { 
          ex.printStackTrace(); 
         } 
         finally 
         { 
          System.out.println("finally"); 
         } 
        }