2009-08-11 12 views
3

Diese Frage klingt vielleicht ein bisschen dumm, aber hier geht es.Welche Art von Ausnahme zu werfen?

Ich habe zwei Funktionen, die jederzeit aufgerufen werden können. Die erste Funktion erstellt einen Snapshot und der zweite analysiert die aus diesem Snapshot entnommenen Daten. Wenn der Benutzer versucht, den Snapshot vor der Aufnahme zu analysieren, sollte meine Anwendung natürlich eine Ausnahme auslösen. Ich kenne die ArgumentOutOfRangeException, die in der Regel geworfen wird, wenn ...... es ein ungültiges Argument gibt, aber das ist nicht wirklich der Fall. Gibt es eine eingebaute Ausnahme für diese Art von Fällen, oder muss ich ArgumentOutOfRangeException verwenden?

Dank

Antwort

16

Klingt wie eine InvalidOperationException. http://msdn.microsoft.com/en-us/library/system.invalidoperationexception.aspx

Das heißt, wenn Sie Ihre API so entwerfen können, dass Sie in dieser Situation nicht kommen können, wäre das besser. Etwas wie (Pseudo):

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

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

So gibt es keine Möglichkeit, sie außer Betrieb zu nennen.

16
+3

"Die Ausnahme, die ausgelöst wird, wenn ein Methodenaufruf für den aktuellen Status des Objekts ungültig ist." –

0

Ich würde verwenden System.ArgumentException- Die Ausnahme, die ausgelöst wird, wenn eines der Argumente für eine Methode nicht gültig ist.

8

Warum erlauben Sie ihm, es falsch zu verstehen? Wie wäre es mit einer Methode

ISnapshot getSnapshot() 

mit ISnapshot mit der Analyse-Methode. Oder einfach analyze(), die den Snapshot abruft, wenn einer nicht verfügbar ist

+3

+1, würde ich für diesen Ansatz gehen, das Problem verschwinden lassen, indem der Code tatsächlich den Snapshot haben, bevor der Zugriff auf die Methode gegeben ist. –

+0

Ich verstehe, aber vielleicht ist es in diesem Fall nicht angebracht. –

+0

... nicht geeignet, weil? – djna

Verwandte Themen