龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Java异常处理的特殊情况

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
1、不能在finally块中执行return,continue等语句,否则会把异常“吃掉”; 2、在try,catch中假如有return语句,则在执行return之前先执行finally块 请大家仔细看下面的例子: 以下是引用片段:

  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"); 
       } 
      } 
  } 


    

  
精彩图集

赞助商链接