2016-01-13 22 views
1

假設我設計了一種計算arcsin函數的方法。當然,只有閉區間[-1,1]中的數字纔可以作爲函數的參數。同時使用兩種或多種異常類型

但是,如果超過該間隔的數字已通過,則該方法將引發異常。我的問題是,IllegalArgumentExceptionArithmeticException兩者同樣適用?如果是的話,舉兩個或多個例外類型同等適用的案例的例子。如果不是,爲什麼?

+1

'Math.asin'返回'NaN'。 – rgettman

回答

1

在Java中,一次可能引發一種類型的異常。

它可以嵌套異常(通過圍繞一個又一個例外 - 看cause參數作爲基礎Exception()構造的一部分)

在ARCSIN情況下,拋出將取決於功能合同是怎樣的說法定義。可以認爲這兩種情況都適用,但鑑於輸入參數的有效範圍已定義明確,可以將其作爲合同的一部分明確表示,並通過使用IllegalArgumentException來拒絕無效參數。

使用的IllegalArgumentException的是:

拋出,表明一個方法已通過非法或不適當的 爭論。

鑑於可以預先進行任何知道可接受值的範圍的算術,這似乎是異常拋出的正確選擇。

1

這確實是您設計中決定應該如何工作的一個因素。另一個選擇是拋出一個自定義的檢查異常,我認爲只要你在你的包/ API中保持一致,並且遵循你已有的編碼標準(如果你有的話),你會沒事的。我認爲這兩者中的任何一個都是有效的選擇,我只是做一個設計決策並記錄下來,這是未來發展的一個確定的決定。所有這一切說,我可能會選擇IllegalArgumentException,因爲它早期發現問題。