2013-06-11 115 views
7

我是Java的新手,我正在尋找異常處理。當我們捉住Java異常,我們聲明和使用Exception類的Object沒有初始化它,即Java異常類

catch(NullPointerException e) 
    e.printStackTrace(); 

所以我的問題是,我們如何能夠使用對象引用Ë沒有實例呢?

+0

提示:您正在捕獲的異常對象*在引發異常的塊中實例化。 – Santa

+0

這同樣適用於方法參數。它們在別處構建併發送到該方法。與例外無異,只是一種不同的機制。 – EJP

回答

8

他們很好實例:

void example() { 
    throw new UnsupportedOperationException("message"); 
}  // ^^^ 

void demonstration() { 
    try { 
     example(); 
    } catch (UnsupportedOperationException e) { 
     e.printStackTrace(); 
    } 
} 

這個非常簡單的例子應該是自我解釋...

1

當(throw)語句發生錯誤時(通常)實例化異常。例如,

throw new NullPointerException(); 

(請注意,這只是一個例子。NPE之間通常不明確自己的代碼拋出。)

catch條款類似於聲明參數的函數。考慮函數

void func(String s) { 
    // ... 
} 

func不實例化sString在其他地方創建並傳遞給函數。以同樣的方式,我們與throw創建一個例外,它是「通過」catch子類有點像一個參數。

0

是的,catch(NullPointerException e)參考e是使用throw new NullPointerException("some error message");

代碼拋出可能是個例外
0

例外被實例化。它發生在類內部,可能會拋出異常。對於您的信息,關鍵字throw負責創建並拋出異常。你的catch方法會捕獲異常。你也可以使用這個關鍵字來實現你自己的例外。