Ich habe gelesen, dass wir nur Ausnahmen abfangen sollten, die behandelt werden können, was das Abfangen der Basisausnahmeklasse (in diesem Fall C #) (zusätzlich zu anderen Gründen) zu einer schlechten Idee macht. Ich bin derzeit Teil eines Projekts, in dem ich bisher noch nichts anderes als die Basisausnahme zu sehen habe. Ich erwähnte, dass dies als schlechte Praxis angesehen wird, aber die Antwort lautete: "Dieser Dienst muss rund um die Uhr ausgeführt werden, so ist es also."
Da ich keine gute Antwort darauf hatte, wie Ausnahmen in einem Programm, das rund um die Uhr ausgeführt werden muss, richtig gehandhabt werden, bin ich jetzt hier. Ich habe keine Informationen / Vorschläge zum Umgang mit Ausnahmebehandlungen in "kritischen" Programmen / Diensten gefunden, die rund um die Uhr ausgeführt werden müssen (und in diesem Fall glaube ich, dass es in Ordnung sein kann, wenn der Dienst eine Minute lang nicht verfügbar ist oder zwei, also nicht einmal kritisch). Ich verstehe, es hängt von der genauen Art des Programms ab. Die Anforderungen an ein Programm, das lebensbedrohliche Probleme verursachen kann, sind ganz anders als bei einem Protokollscanner für ein Online-Spiel.
Zwei Beispiele:
1: Ein Type-Ahead-Service für Kunden der britischen Eisenbahnen, der bei der Online-Suche nach Bahnhöfen eingesetzt wird.
2: Ein Programm, das die Eisenbahnweichen für die oben genannten Eisenbahnen automatisch auf der Grundlage von Echtzeitinformationen steuert, die von verschiedenen Sensoren in den Gleisen, Zügen usw. bereitgestellt werden.
Das erste Programm würde wahrscheinlich kein größeres Problem verursachen, wenn es für ein oder zwei Minuten ausfällt, wobei das letztere zu menschlichen Opfern führen könnte. Vorschläge, wie man mit jedem umgeht? Hinweis darauf, wo ich weitere Informationen und Gedanken zu diesem Thema finden kann?
catch Exception
. Das bedeutet nicht, dass Ihr Programm funktioniert , es bedeutet, dass bei Fehlern der Anwendungsstatus beschädigt wird, während die Ausführung fortgesetzt wird. Dies ist ein weitaus gefährlicherer Ort. Ein abgestürztes Programm kann katastrophal sein, aber ein Programm, das sich in einem ungültigen Zustand befindet, aber noch Aktionen ausführt, kann aktiv katastrophal sein.