2012-12-17 48 views
4

我只想知道爲什麼我們在自己創建的自定義異常中調用super。超級調用自定義異常

public class MyException extends Exception 
{ 
    public MyException(String message)   
    { 
    super(message);   
    }  
} 

這裏用的是什麼叫超(消息)

+2

這是調用非默認超級的構造函數。 –

回答

10

由於派生類總是具有基類作爲模板的構造,它是必須初始化基類作爲構建派生對象的第一步。默認情況下,如果沒有調用super,Java將使用默認(無參數)構造函數來創建基類。如果你想使用不同的構造函數,你必須使用super來傳入你想要的參數並調用正確的構造函數。

在自定義異常的情況下,通常使用super來初始化異常的錯誤消息;通過將消息傳遞給基類構造函數,基類將負責正確設置消息的工作。

2

這只是調用基類的構造函數:

Exception(String message)

構造帶指定詳細消息的新異常。

0

使用超級的是調用超(鹼,親本)類,它正好是Exception

2

因爲:

public MyException(String message)   
    { 
    //super() implicit call, how to set message??? 

} 

所以你需要一個超級(消息)調用來設置消息。