关于try catch finally

 1. try &catch

    如果try块中抛出异常,就转到catch块中去处理,执行catch块后面的语句。

2.try &catch& finally

   如果try块中抛出异常,转到catch块,catch块执行完之后,转到finally块执行,之后在执行finally块后面的语句。

  如果try中没有抛出异常,也会去执行finally块的代码。然后执行finally块后面的语句。

3.try&finally

  如果try块中抛出异常,转到finally块的代码。finally块之后的代码不会执行。因为你没有处理异常,执行完finally后,方法就用抛出异常的方式推出了。

 注:由于没有catch块捕获异常,所以在方法后面的声明抛出异常。

   总结:在catch块和finally块中仍然可以再抛出新的异常,如果对于新抛出的异常没有写try的话,在方法后面的声明抛出新的异常。如果try块或者catc块的异常再添加外层try,catch,方法就不必声明异常了

下例:

  1. public class Test1 {  
  2.   
  3.     /** 
  4.      * @param args 
  5.      * @throws MyException  
  6.      */  
  7.     public static void main(String[] args) {  
  8.     //public static void main(String[] args) throws MyException {  
  9.           
  10.         // TODO Auto-generated method stub  
  11.         TestException te = new TestException();  
  12.           
  13.         /* 
  14.          * try+catch 
  15.          *  
  16.         try{ 
  17.             te.test(); 
  18.         }catch(MyException e){ 
  19.             e.printStackTrace(); 
  20.         } 
  21.         System.out.println("after exception"); 
  22.         */  
  23.           
  24.         /* 
  25.          * try+catch+finally 
  26.          *  
  27.         try{ 
  28.             te.test(); 
  29.         }catch(MyException e){ 
  30.             e.printStackTrace(); 
  31.         }finally{ 
  32.             System.out.println("entry finally block"); 
  33.         }        
  34.         System.out.println("after exception"); 
  35.         */  
  36.           
  37.           
  38.         /* 
  39.          * try+finally 
  40.          *  
  41.         try{ 
  42.             te.test(); 
  43.         }finally{ 
  44.             System.out.println("entry finally block"); 
  45.         } 
  46.          
  47.         System.out.println("after exception"); 
  48.         */   
  49.   
  50.     }  
  51.   
  52. }  
  53.   
  54. class TestException {  
  55.     void test() throws MyException{  
  56.         throw new MyException("illegal invoked");  
  57.     }  
  58. }  
  59.   
  60. class MyException extends Exception{  
  61.     MyException(String msg){  
  62.         super(msg);  
  63.     }  
  64. }  
posted @ 2017-02-23 08:32  我也曾天真  阅读(185)  评论(0)    收藏  举报