Dies ist möglicherweise eine schlechte Idee. Erstens ist es ein Symbol für die Maxime "Die Definition von Wahnsinn macht zweimal dasselbe und erwartet jedes Mal andere Ergebnisse". Zweitens passt dieses Codierungsmuster nicht gut zu sich selbst. Zum Beispiel:
Angenommen, Ihre Netzwerkhardwareschicht sendet ein Paket bei einem Fehler dreimal erneut und wartet beispielsweise eine Sekunde zwischen den Fehlern.
Angenommen, die Softwareschicht sendet eine Benachrichtigung über einen Fehler dreimal bei einem Paketfehler erneut.
Angenommen, die Benachrichtigungsschicht reaktiviert die Benachrichtigung dreimal bei einem Fehler bei der Zustellung der Benachrichtigung.
Angenommen, die Fehlerberichtsschicht reaktiviert die Benachrichtigungsschicht dreimal bei einem Benachrichtigungsfehler.
Angenommen, der Webserver reaktiviert die Fehlerberichterstattung dreimal bei einem Fehler.
Angenommen, der Webclient sendet die Anforderung dreimal erneut, nachdem er einen Fehler vom Server erhalten hat.
Angenommen, die Leitung auf dem Netzwerk-Switch, die die Benachrichtigung an den Administrator weiterleiten soll, ist nicht angeschlossen. Wann erhält der Benutzer des Webclients endlich seine Fehlermeldung? Ich schaffe es ungefähr zwölf Minuten später.
Damit Sie nicht glauben, dass dies nur ein dummes Beispiel ist: Wir haben diesen Fehler im Kundencode gesehen, obwohl er weitaus schlimmer ist, als ich hier beschrieben habe. In dem bestimmten Kundencode betrug die Lücke zwischen dem Auftreten des Fehlerzustands und der endgültigen Meldung an den Benutzer mehrere Wochen, da so viele Ebenen automatisch mit Wartezeiten erneut versucht wurden. Stellen Sie sich vor, was passieren würde, wenn zehn statt drei Wiederholungen durchgeführt würden .
Normalerweise ist es das Richtige, eine Fehlerbedingung sofort zu melden und den Benutzer entscheiden zu lassen, was zu tun ist. Wenn der Benutzer eine Richtlinie für automatische Wiederholungsversuche erstellen möchte, lassen Sie ihn diese Richtlinie auf der entsprechenden Ebene in der Software-Abstraktion erstellen.