So behandeln Sie Ausnahmen, die in der Bindung oder im Körper auftreten

8

Wie geht man mit Ausnahmen um, die in den Bindings oder im Hauptteil einer let -Anweisung auftreten könnten, die denselben finally-Block verwendet? Ex:

%Vor%

Wenn (create-connections) oder (dostuff) fehlschlägt, möchte ich (close connections) . Einige Optionen:

Option 1:

%Vor%

Dies funktioniert natürlich nicht, da connections im finally-Block nicht im Bereich ist.

Option 2:

%Vor%

Diese Option fängt nur Ausnahmen ein, die im (destuff) -Aufruf auftreten, und nicht solche, die in (create-connections) auftreten.

Option 3:

%Vor%

Dies funktioniert auch nicht, da connections nicht den Gültigkeitsbereich für die finally-Anweisung in der let-Bindung enthält.

Was ist der beste Weg, damit umzugehen?

    
Josh 02.12.2013, 18:58
quelle

1 Antwort

10

Das eingebaute with-open funktioniert auf alles, was Sie .close aufrufen können, also ist der normale Ansatz etwas wie:

%Vor%

und behandelt Fehler beim Öffnen von Verbindungen innerhalb des Codes, der sie nicht öffnen konnte. Wenn create-connections eine der Verbindungen nicht öffnen kann, dann ist vielleicht ein try ... finally block in create-connections ein saubererer Ort, um diese Art von Fehler zu behandeln.

    
Arthur Ulfeldt 02.12.2013, 19:09
quelle