Während es logisch erscheint zu sagen, dass Programme nur Ausnahmen abfangen sollten, mit denen sie umgehen können, und möglicherweise nicht wissen können, wie mit Ausnahmen umzugehen ist, die vom Programmierer nicht erwartet wurden, ignoriert eine solche Behauptung die Tatsache, dass viele Vorgänge in a fehlschlagen können eine nahezu unbegrenzte Anzahl von Möglichkeiten, die keine Nebenwirkungen haben, und dass in vielen Fällen die ordnungsgemäße Behandlung für die überwiegende Mehrheit solcher Fehler identisch sein wird; Die genauen Details des Fehlers sind irrelevant, und folglich sollte es egal sein, ob der Programmierer sie vorweggenommen hat.
Wenn der Zweck einer Funktion beispielsweise darin besteht, eine Dokumentdatei in ein geeignetes Objekt einzulesen und entweder ein neues Dokumentfenster zu erstellen, um dieses Objekt anzuzeigen, oder dem Benutzer zu melden, dass die Datei nicht gelesen werden konnte, versuchen Sie, eine zu laden Eine ungültige Dokumentdatei sollte die Anwendung nicht zum Absturz bringen. Stattdessen sollte eine Meldung angezeigt werden, die auf das Problem hinweist. Der Rest der Anwendung sollte jedoch normal weiterlaufen, es sei denn, der Versuch, das Dokument zu laden, hat aus irgendeinem Grund den Status eines anderen Elements im System beschädigt .
Grundsätzlich hängt die ordnungsgemäße Behandlung einer Ausnahme häufig weniger vom Ausnahmetyp ab als vom Ort, an dem sie ausgelöst wurde. Wenn eine Ressource durch eine Lese- / Schreibsperre geschützt ist und eine Ausnahme innerhalb einer Methode ausgelöst wird, die die Lesesperre erhalten hat, sollte das ordnungsgemäße Verhalten im Allgemeinen darin bestehen, die Sperre aufzuheben, da die Methode der Ressource nichts anhaben kann . Wenn eine Ausnahme ausgelöst wird, während die Sperre zum Schreiben angefordert wird, sollte die Sperre häufig ungültig gemacht werden, da sich die geschützte Ressource möglicherweise in einem ungültigen Zustand befindet. Wenn das Sperrprimitiv keinen "ungültigen" Zustand aufweist, sollte ein Flag hinzugefügt werden, um eine solche Ungültigmachung zu verfolgen. Das Aufheben der Sperre, ohne sie zu ungültig zu machen, ist fehlerhaft, da andere Codes das geschützte Objekt möglicherweise in einem ungültigen Zustand sehen. Das Schloss baumeln zu lassen ist jedoch nicht Auch eine richtige Lösung. Die richtige Lösung besteht darin, die Sperre aufzuheben, damit anstehende oder zukünftige Erfassungsversuche sofort fehlschlagen.
Wenn sich herausstellt, dass eine ungültige Ressource vor dem Versuch, sie zu verwenden, verworfen wird, besteht kein Grund, die Anwendung herunterzufahren. Wenn eine ungültig gemachte Ressource für den weiteren Betrieb einer Anwendung von entscheidender Bedeutung ist, muss die Anwendung heruntergefahren werden. Wenn die Ressource jedoch ungültig gemacht wird, ist dies wahrscheinlich. Der Code, der die ursprüngliche Ausnahme erhalten hat, kann häufig nicht wissen, welche Situation zutrifft. Wenn er jedoch die Ressource ungültig macht, kann er sicherstellen, dass in beiden Fällen die richtige Aktion ausgeführt wird.