2013-05-02 99 views
3

我正在尋找一個例外拋出一個方法。該方法是這樣的:Java方法簽名拋出異常,執行不

public void someMethod() throws someCheckedException{ 

    //doSomething statements 
    //but no statements actually throws 'someCheckedException' 

} 

我的問題是,是否有可能使這種方法扔「someCheckedException」,而實現沒有throw語句都沒有。

將throw異常置入簽名而未實現拋出異常的語句是錯誤的嗎?

+1

這樣做是合法的。 「正確」或「錯誤」是主觀的。 – 2013-05-02 22:35:17

+0

不,這沒有錯,但爲什麼你添加拋出子句沒有任何必要的使用它? – Azad 2013-05-02 22:35:54

+0

@AzadOmer有很多場合。 RMI就是一個例子。 – EJP 2013-05-02 23:05:36

回答

4

這完全沒問題。方法簽名中的throw語句在case方法拋出在throws語句中聲明的實際異常並且通常將處理傳遞給不同的類 您只需要記住當您要使用它時將此類方法放入try catch語句中。

1

這個異常可能是由someMethod調用的方法之一拋出的。

例如

void method1() throws Exception { 
     method2(); 
    } 

    void method2() { 
     throw new Exception(); 
    } 
1

這是合法的。這在RMI中非常普遍。遠程接口中的方法必須聲明爲拋出RemoteException,但實現方法不需要聲明它,因爲它們本身並不實際拋出它(除非它們自己執行RMI調用)。遠程異常由RMI本身引發。然而,他們經常聲明只是爲了同意遠程接口。這不是必需的。