Wie Sie weiterhin das ausführen von code nach der eine Ausnahme geworfen wird?
Ich würde gerne wissen, ob es eine Möglichkeit gibt, damit das Programm fortgesetzt werden soll, nachdem eine Ausnahme ausgelöst wird. Zum Beispiel:
Try
line 1
line 2
line 3
line 4 ' (here the exception is thrown and jumps to the catch)
line 5 ' <-- I would like the program to continue its execution, logging the error
line 6
Catch ex as Exception
log(ex.tostring)
End Try
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn du etwas tust, dass Sie wissen, wie zu erholen oder das ist nicht lebenswichtig, und man sollte wickeln Sie einfach die Zeile in ein try/catch-mit einem speziellen Fang.
z.B.
Verwenden "Weiterhin Für'
Nicht gut praktisch überall, aber nützlich in einigen Fällen, z.B. suchen einer Datei während der Behandlung verweigert den Zugriff auf bestimmte Verzeichnisse:
Obwohl
On Error Resume Next
ist noch verfügbar in VB.NET, es ist gegenseitig, um die bevorzugte Methode der strukturierten Ausnahmebehandlung.Stattdessen würde ich empfehlen die Verwendung der
Finally
- Klausel einerTry..Catch..Finally
- block, um sicherzustellenLine 5 and Line 6
ausgeführt werden, auch wenn die Linie 4 (oder jeder vorhergehenden Zeile) wirft.VB.net unterstützt nicht diese Art von konstruieren. Sobald die Ausnahme wickelt den stack, es kann nicht sein, schlängelte sich wieder zurück. Einige Sprachen erlauben es Ihnen, wieder die Ausnahme, aber Sie erfordern mehr anspruchsvolle stack-Verwaltung – im wesentlichen Coroutinen.
Wenn ich mich nicht Irre die "Best Practices für die Handhabung von Ausnahmen", sagt Sie, wenn Sie können prüfen, ob ein Fehler wird wahrscheinlich auftreten, dann überprüfen Sie für die Bedingung. Wenn Sie können überprüfen für dbnull dann so.
Hier ist ein Beispiel in code:
In VB.NET Sie können VISUAL BASIC 6.0-Code:
Und Sie können die ERL() für Sicht-err-Linie Schriftsteller, bevor der code '10:' (o nicht schreiben Sie diese Nummern/Etiketten)
schon ein Alter Beitrag, aber für das wohl der anderen .
persönlich würde ich "on error resume next" in diesem Fall ist es ein notwendiges übel