2009-05-21 3 views
1

Eine einfache Frage, die mich interessiert:Ausnahmen in Repositories: Wie gehst du damit um?

Möchten Sie bei Ihren Repository-Implementierungen Ausnahmen im Repository hinterlassen und die Ausnahmebehandlung dem Aufrufer überlassen oder lieber abfangen? Ausnahmen in Ihrem Repository, speichern Sie die Ausnahme und geben Sie false/null zurück?

Antwort

3

Es hängt davon ab.

Lassen sich Ausnahmen aufblitzen? Absolut. Aber ich will das für Verbindungsfehler, Befehlsfehler. Was auch immer Sie tun, verstecken Sie diese nicht nur, Sie müssen über sie wissen. Ich bevorzuge es, dass meine Anwendungen so schnell wie möglich ausfallen, um Nebenwirkungen und weitere Schäden zu reduzieren.

Ich protokolliere auch Ausnahmen. Ich benutze Log4net, um dabei zu helfen. Aber ich protokolliere Ausnahmen an der Quelle. Ich werde sie von dort sprudeln lassen.

Zurück Null? Wenn etwas nicht gefunden werden kann (d. H. Nach etwas nach ID suchen und es nicht dort ist), gebe ich null zurück, keine Ausnahme. Aber es gibt Fälle, wo ich eine neue Ausnahme werfen könnte, wenn das passiert.

Hauptpunkt: Ausnahmen sollten "außergewöhnlich" sein, nicht die Regel. Wenn eine Ausnahme ausgelöst wird, sollte dies darauf zurückzuführen sein, dass etwas nicht stimmt und Sie es beheben müssen.

+0

Ihr Hauptpunkt denke ich ist sehr gültig. +1 –

0

Ich lasse normalerweise Ausnahmen auslaufen, obwohl ich in einer besonders Enterprisey-Stimmung bin, wickle ich sie in eine RepositoryException, um Kunden davon abzuhalten, sich um die zugrundeliegende Speichermaschine zu kümmern.

Ich würde niemals false/null anstelle einer Ausnahme zurückgeben, da hinter diesen Werten bereits eine Bedeutung steht. In seltenen Fällen könnten Sie eine hirntote Speicher-Engine haben, die Ausnahmen in Ausnahmefällen generiert - und ich würde diese bestimmten fangen und gegebenenfalls null zurückgeben (z. B. wenn eine Zeile nicht existiert, aber Die Speicher-Engine gibt in diesem Fall einen Fehler aus - ich würde ihn abfangen und null zurückgeben.

+0

Ja, ich bin mit Ihnen auf nur Fehler zu fangen, die nicht Ausnahmefälle betreffen. Es kam mir in den Sinn, dass ich, wenn ich Ausnahmen im Repository abfing und "false" zurückgab, mich zwang, mich daran zu erinnern, die Fehler außerhalb des Repositorys zu erfassen, was letztendlich in der Benutzererfahrung sowieso dasselbe wäre. (unter der Annahme, dass ich Fehler erhalte und anmutig fehlschlägt) –

Verwandte Themen