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?
InvalidDataException
erscheint mir ziemlich vernünftig:
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?
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.
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 ...
Tags und Links .net c# exception-handling