Ich habe viele Tutorials gelesen und viele Codebeispiele bezüglich der Implementierung des Repository
Musters gesehen. In fast allen Fällen werden Ausnahmen, die sich aus dem Versuch ergeben, die Datenbank zu schlagen, wenn die Datenbank nicht verfügbar ist, nicht behoben. Dies erscheint seltsam, wenn man bedenkt, dass dies ein sehr realistisches Szenario ist, wenn sich die Datenbank irgendwo in einem Netzwerk befindet.Warum behandeln Beispiele des Repository-Musters niemals Datenbankverbindungsausnahmen?
Was ist die beste Vorgehensweise für die Behandlung dieser Ausnahmen?
Wrap jede dieser hundert Anrufe in einem try/catch, wo jeder könnte die gleichen n catch-Blöcke haben? Das ist eine Menge Duplikation, chaotisch, fehleranfällig usw.
Lassen Sie die Ausnahmen bis zur App-Ebene aufblitzen und fangen Sie sie als unbehandelte Ausnahmen? Dies ist sinnvoll, wenn die Ausnahme für den Benutzeroberflächenthread ausgelöst wird. Andernfalls führt die Behandlung einer nicht behandelten AppDomain-Ausnahme dazu, dass die App heruntergefahren wird.
Verwenden Sie ein Framework wie die Exception der Enterprise Library Application Block?
Viele Fehler können nicht auf Repository-Ebene wiederholt werden. Zum Beispiel müssen Deadlocks, Zeitüberschreitungen, Netzwerkfehler auf der Transaktionsebene wiederholt werden, die mehrere Repo-Operationen umfassen kann. – usr