TRY ... CATCH
- Last UpdatedApr 24, 2026
- 2 minute read
TRY ... CATCH bietet eine Möglichkeit, einige oder alle möglichen Fehler, die in einem gegebenen Code-Block auftreten können, zu behandeln, während das Programm weiter läuft, als es abzubrechen. Der Teil TRY des Codes ist als Try-Block bekannt. Behandeln Sie etwaige Ausnahmen im Teil CATCH des Codes, der als Catch-Block bekannt ist.
Das allgemeine Format für TRY ... CATCH ist wie folgt:
TRY
[try statements] ’geschützter Bereich
CATCH
[Catch-Anweisungen]
ENDTRY
Wobei:
tryStatements
Anweisung(en), bei der/denen ein Fehler auftreten kann. Kann eine zusammengesetzte Anweisung sein. Die tryStatement ist ein geschützter Bereich.
catchStatements
Anweisungen(en) zur Behandlung von Fehlern, die im zugehörigen Try-Block auftreten können. Kann eine zusammengesetzte Anweisung sein.
Anweisungen innerhalb des Catch-Blocks können auf die reservierte ERROR-Variable verweisen, die eine .NET System.Exception ist, ausgeworfen vom Try-Block. Die Anweisungen im Catch-Block laufen nur, wenn eine Ausnahme vom Try-Block ausgeworfen wird.
TRY ... CATCH wird wie folgt ausgeführt:
-
Die Laufzeit-Fehlerbehandlung startet mit TRY. Geben Sie Code, der zu einem Fehler führen könnte, in den Try-Block.
-
Wenn kein Laufzeitfehler auftritt, läuft das Skript wie gewöhnlich. Die Anweisungen im Catch-Block werden ignoriert.
-
Wenn ein Laufzeitfehler auftritt, wird der Rest des Try-Blocks nicht ausgeführt.
-
Wenn ein Laufzeitfehler auftritt, springt das Programm sofort zur CATCH-Anweisung und führt den Catch-Block aus.
Die einfachste Art der Ausnahmebehandlung ist es, das Programm anzuhalten, die Ausnahmemeldung herauszuschreiben und das Programm fortzusetzen.
Die Fehlervariable ist keine Zeichenfolge, sondern ein .NET-Objekt der System.Exception. Dies bedeutet, dass Sie den Typ der Ausnahme bestimmen können, auch mit einer einfachen CATCH-Anweisung. Rufen sie die Methode GetType() auf, um den Typ der Ausnahme zu bestimmen, und führen Sie dann den gewünschten Vorgang aus, ähnlich der Ausführung mehrfacher Catch-Blöcke.
Beispiel:
dim command = new System.Data.SqlClient.SqlCommand;
dim reader as System.Data.SqlClient.SqlDataReader;
command.Connection = new System.Data.SqlClient.SqlConnection;
try
command.Connection.ConnectionString = "Integrated Security=SSPI";
command.CommandText="select * from sys.databases";
command.Connection.Open();
reader = befehl.ExecuteReader();
while reader.Read()
me.name = reader.GetString(0);
LogMessage(me.name);
endWhile;
catch
LogMessage(error);
endtry;
if reader <> null and not reader.IsClosed then
reader.Close();
endif;
if command.Connection.State == System.Data.ConnectionState.Open then
command.Connection.Close();
endif;
Hinweis: Im folgenden Codebeispiel wird die System.Data.SqlClient-Methode verwendet, die veraltet ist. Verwenden Sie stattdessen die SQLData-Skriptbibliothek für SQL Server-Abfragen.