Vor Jahren haben wir ein Steuerungssystem-Framework geschrieben, und die Agent-Objekte haben Laufzeitausnahmen abgefangen, sie protokolliert, wenn sie konnten, und wurden fortgesetzt.
Ja, wir haben Laufzeitausnahmen einschließlich OutOfMemory in unserem Framework-Code abgefangen (und einen GC erzwungen, und es ist überraschend, wie gut das auch ziemlich undichten Code ausgeführt hat.) Wir hatten Code, der sehr mathematische Dinge in der realen Welt ausführte. und von Zeit zu Zeit kam eine Not-A-Nummer aufgrund winziger Rundungsfehler herein und es kam auch damit klar.
Also im Framework / "darf nicht beenden" Code denke ich, dass es gerechtfertigt sein kann. Und wenn es funktioniert, ist es ziemlich cool.
Der Code war ziemlich solide, aber es lief Hardware, und Hardware neigt manchmal dazu, verrückte Antworten zu geben.
Es wurde entwickelt, um monatelang ohne menschliches Eingreifen zu laufen. In unseren Tests hat es sehr gut funktioniert.
Als Teil des Fehlerbehebungscodes kann das gesamte Gebäude neu gestartet werden, indem die USV in N Minuten ausgeschaltet und in M Minuten eingeschaltet werden kann.
Manchmal müssen Hardwarefehler aus- und wieder eingeschaltet werden :)
Wenn ich mich recht erinnere, war der letzte Ausweg nach einem erfolglosen Aus- und Einschalten das Senden einer E-Mail an die Eigentümer mit der Aufschrift "Ich habe versucht, mich selbst zu reparieren und ich kann nicht; das Problem liegt im Subsystem XYZ" und einem Link zum Aufrufen eines Supports Rufen Sie uns zurück.
Leider wurde das Projekt eingemacht, bevor es sich selbst bewusst werden konnte :)>