2013-08-22 39 views
-1

後,如何在程序中執行以下如何拋出一個異常

class ExceptionHandlingImpl 
{ 
    static void divide() 
    { 
     try 
     { 
     double a= 1/0; 
     } 
     catch(Exception e) 
     {  
     throw e;   
     } 
    } 

    static void add() 
    { 
     int a=20,b=30,c; 
     c=ab+b; 
     System.out.println(c); 
    } 

public static void main(String args[]) 
    { 
    divide(); 
    add(); 
    } 

} 

的add()方法爲什麼當我給throw語句在鴻溝的方法Add()不執行的執行方法() 方法。當throw被註釋時,add()方法可以很好地執行。無論如何,這種異常也是使用throw引發的,並且方法繼承它也會被執行。

+0

如果拋出異常,即使try-catch塊中的代碼行開頭也沒有意義。 –

+0

只需用'add()'替換'throw'語句 – Undefined

+1

爲什麼當控制永遠達不到它時,你會期望執行add? –

回答

1

當你的throw例外,你基本上說「我不知道該怎麼辦」。所以異常會冒出來,直到它到達程序的最後一個堆棧幀,並且如果在這種情況下未處理,則會暫停該程序。

+0

我在這裏得到了正確的解釋intsead爲什麼從所有的程序給出。 –

0

因爲從方法'分'你拋出一個例外。如果你想繼續你需要趕上和重新拋出異常

+0

或者不是故意拋出異常。 –

+0

@ user2310289:假設try引發一個用戶定義的異常,我們需要'拋出'異常來檢查發生了什麼,在這種情況下如何調用add()方法? –

0

throw e;會拋出異常並導致程序崩潰。

public class test 
    { 
     static void divide() 
     { 
      try 
      { 
      double a= 1/0; 
      } 
      catch(Exception e) 
      {  
      System.out.println(e);   
      } 
     } 

     static void add() 
     { 
      int a=20,b=30,c; 
      c=a+b; 
      System.out.println(c); 
     } 

    public static void main(String args[]) 
     { 
     divide(); 
     add(); 
     } 

    }