2009-08-11 115 views
3

這個問題可能聽起來有點愚蠢,但在這裏。扔什麼樣的異常?

我有兩個函數可以隨時調用。第一個函數拍攝快照,第二個函數分析從該快照拍攝的數據。當然,如果用戶在使用之前嘗試分析快照,我的應用程序應該拋出一個異常。我知道ArgumentOutOfRangeException當......有一個無效的參數時通常會拋出,但事實並非如此。這種情況是否有內置的例外,還是我必須使用ArgumentOutOfRangeException

謝謝

回答

16

聽起來像一個InvalidOperationException。 http://msdn.microsoft.com/en-us/library/system.invalidoperationexception.aspx

這就是說,如果你可以設計你的API,以便你不能進入這種情況,那會更好。類似於(僞):

public Data TakeSnapshot() 
{ 
    // ... 
    return new Data(...); 
} 

public void Analyze(Data data) 
{ 
    // ... 
} 

像這樣,無法按順序調用它們。

8

爲什麼你讓他錯了?如何使用方法

ISnapshot getSnapshot() 

與ISnapshot具有分析方法。或者只是分析()如果沒有可用的快照,則獲取快照

+3

+1,我會採用這種方法,通過在訪問該方法之前要求代碼實際具有快照,使問題消失。 – 2009-08-11 09:13:47

+0

我明白你的觀點,但在這種情況下可能不合適。 – 2009-08-11 09:15:46

+0

...不恰當,因爲? – djna 2009-08-11 09:18:34

相關問題