這個問題可能聽起來有點愚蠢,但在這裏。扔什麼樣的異常?
我有兩個函數可以隨時調用。第一個函數拍攝快照,第二個函數分析從該快照拍攝的數據。當然,如果用戶在使用之前嘗試分析快照,我的應用程序應該拋出一個異常。我知道ArgumentOutOfRangeException
當......有一個無效的參數時通常會拋出,但事實並非如此。這種情況是否有內置的例外,還是我必須使用ArgumentOutOfRangeException
?
謝謝
這個問題可能聽起來有點愚蠢,但在這裏。扔什麼樣的異常?
我有兩個函數可以隨時調用。第一個函數拍攝快照,第二個函數分析從該快照拍攝的數據。當然,如果用戶在使用之前嘗試分析快照,我的應用程序應該拋出一個異常。我知道ArgumentOutOfRangeException
當......有一個無效的參數時通常會拋出,但事實並非如此。這種情況是否有內置的例外,還是我必須使用ArgumentOutOfRangeException
?
謝謝
聽起來像一個InvalidOperationException。 http://msdn.microsoft.com/en-us/library/system.invalidoperationexception.aspx
這就是說,如果你可以設計你的API,以便你不能進入這種情況,那會更好。類似於(僞):
public Data TakeSnapshot()
{
// ...
return new Data(...);
}
public void Analyze(Data data)
{
// ...
}
像這樣,無法按順序調用它們。
我會使用System.ArgumentException- 提供給方法的參數之一無效時引發的異常。
爲什麼你讓他錯了?如何使用方法
ISnapshot getSnapshot()
與ISnapshot具有分析方法。或者只是分析()如果沒有可用的快照,則獲取快照
+1,我會採用這種方法,通過在訪問該方法之前要求代碼實際具有快照,使問題消失。 – 2009-08-11 09:13:47
我明白你的觀點,但在這種情況下可能不合適。 – 2009-08-11 09:15:46
...不恰當,因爲? – djna 2009-08-11 09:18:34
「當對象的當前狀態的方法調用無效時引發的異常。 – 2009-08-11 09:09:16