Was ist Catch Block?
Ein catch-Block in C # ist ein optionaler Codeblock, der ausgeführt wird, wenn eine Ausnahme ausgelöst wird.
Catch-Block ist ein spezifischer Teil des Ausnahmebehandlungskonstrukts und wird unter Verwendung des Schlüsselworts ‚catch‘ in Kombination mit den Schlüsselwörtern ‚try‘ und ‚finally‘ implementiert und bildet die Mittel zur Implementierung einer strukturierten Ausnahmebehandlung. Ein try-Block enthält den überwachten Code, der die Ausnahme verursachen kann. Es enthält Aussagen, die sich mit außergewöhnlichen Umständen befassen und daran arbeiten, sich von solchen unerwarteten Bedingungen zu erholen.
Catch-Block bildet das Mittel zum Behandeln von Ausnahmen. Werden diese nicht behandelt, kann dies zur Beendigung des gesamten Programms durch die .NET-Laufzeit führen. Ein Catch-Block kann verwendet werden, um irgendwelche oder bestimmte Ausnahmen zu behandeln.
Das Ausnahmebehandlungsmodell der Common Language Runtime (CLR) erlaubt mehr als einen catch-Block, von denen jeder für eine bestimmte Ausnahme ausgelegt ist. Wenn eine Ausnahme auftritt, sucht die CLR nach dem catch-Block, der die Ausnahme behandelt. Wenn die aktuell ausgeführte Methode keinen solchen Block enthält, sucht CLR in der Methode, die die aktuelle Methode aufgerufen hat, nach dem Aufruf-Stack. Wenn im gesamten Code keine Übereinstimmungsklausel für diese Ausnahme gefunden wird, wird die Ausführung des Threads beendet und dem Benutzer wird eine unbehandelte Ausnahmebedingungsnachricht angezeigt.
Im Folgenden finden Sie einige Tipps zur Verwendung eines Catch-Blocks:
Der Ausnahmetyp muss nur dann für den catch-Block angegeben werden, nachdem der Grund für das Auftreten bestimmter nicht durchführbarer Ausnahmen (wie katastrophaler Systemausfall,
API-Missbrauch usw.) ermittelt wurde und die Wiederherstellung implementiert wurde, ohne die Anwendung inkonsistent zu lassen ungültiger Status.
Der catch-Block sollte so positioniert werden, dass die spezifischeren Ausnahmen vor den weniger spezifischen abgefangen werden müssen.
Catch-Block ohne Parameter wird als ‚Essen Ausnahmen‘ bezeichnet, da dies schwerwiegende Probleme unterdrücken kann, die schwer zu debuggen sind.
Der Catch-Block kann zentralisiert werden, so dass er die Ausnahme von einem zentralen Ort aus behandeln kann.
Die Anweisung ‚throw‘ kann innerhalb des catch-Blocks verwendet werden, bei dem das gleiche Ausnahmeobjekt, das in throw übergeben wurde, beim erneuten Auslösen erneut übergeben werden kann.
Variablen, die in einem try-Block deklariert sind, können nicht außerhalb davon verwendet werden.
Nach der Ausführung des Catch-Blocks wird der Code nicht mehr in den try-Block zurückgesetzt.
Das Testen des Ausnahmehandlercodes im catch-Block ist wesentlich, um zu verhindern, dass die Anwendung beschädigt wird.
Catch-Block sollte nicht für Cleanup-Code verwendet werden.
Catch-Block ohne Parameter kann nicht für die Behandlung von Nicht-Common Language System-konformen Ausnahmen (die nicht von System.Exception abgeleitet sind) verwendet werden.