Java异常处理的特殊情况

上一篇 / 下一篇  2009-05-21 15:21:45 / 个人分类:java知识

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


TAG:

 

评分:0

我来说两句

日历

« 2024-05-03  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 58092
  • 日志数: 89
  • 建立时间: 2008-12-13
  • 更新时间: 2010-01-13

RSS订阅

Open Toolbar