Welche .NET-Ausnahme wird für den ungültigen Datenbankstatus ausgelöst?

7

Ich schreibe einen Datenzugriffscode und möchte nach möglicherweise "ungültigen" Datenzuständen in der Datenbank suchen. Zum Beispiel gebe ich ein Widget aus der Datenbank zurück und ich erwarte nur eines. Wenn ich zwei bekomme, möchte ich eine Ausnahme werfen. Auch wenn die referenzielle Integrität dies verhindern sollte, möchte ich nicht von den Datenbankadministratoren abhängig sein, die das Schema nie ändern (um dies zu verdeutlichen, wenn die Primärschlüsselbeschränkung entfernt wird und ich einen Betrogenen bekomme, möchte ich schnell und deutlich brechen).

Ich möchte die System.IO.InvalidDataException verwenden, mit der Ausnahme, dass es sich nicht um einen Dateistream handelt, der irreführend wäre. Ich endete mit einer generischen ApplicationException. Jeder hat eine bessere Idee?

    
jslatts 13.04.2010, 16:44
quelle

4 Antworten

15

InvalidDataException erscheint mir ziemlich vernünftig:

  • Der Name passt perfekt
  • Die Beschreibung passt ziemlich gut, wenn man bedenkt, dass es sich tatsächlich um einen Daten- "Stream" aus der Datenbank
  • handelt
  • Nichts in der Beschreibung erwähnt Dateien, also würde ich mir keine Sorgen machen über diese Seite der Dinge

Sie deserialisieren Daten aus einem Geschäft. Es ist zufällig ein RDBMS, aber das ist relativ unwichtig. Die Daten sind ungültig, daher passt InvalidDataException gut.

Um es anders auszudrücken: Wenn Sie die Daten aus einer Datei laden würden, würden Sie InvalidDataException verwenden? Angenommen, Sie würden, warum sollte es wichtig sein, woher die Daten stammen, in Bezug auf die Ausnahme geworfen werden?

    
Jon Skeet 13.04.2010, 16:48
quelle
6

Wenn Sie eine Ausnahme benötigen, die genau die Situation beschreibt, mit der Sie es zu tun haben, warum nicht eine eigene Ausnahme machen?

Erben Sie es einfach von System.Exception.

    
user302845 13.04.2010 16:46
quelle
1

Ich könnte versucht sein, einen der folgenden Punkte zu verwenden:

InvalidConstraintException
NotSupportedException
OverflowException

Oder machen Sie einfach eine eigene: TooManyRowsException

    
NotMe 13.04.2010 16:47
quelle
0

Sie können eine benutzerdefinierte Ausnahme schreiben, wenn Sie keine geeignete Standard-Ausnahme finden ...

Aber Sie sagen:

  

Obwohl referentielle Integrität   sollte dies verhindern, ich   Ich möchte mich nicht auf die Datenbankadministratoren verlassen   niemals das Schema ändern.

Wenn jemand das DB-Schema ändert, sind die Änderungen ziemlich groß, dass Sie auch einige Änderungen an Ihrem Anwendungs- / Datenzugriffscode vornehmen müssen ...

    
Frederik Gheysels 13.04.2010 16:46
quelle

Tags und Links