catch
Das catch-Keyword ist nur in C++ verfügbar und dient dazu, eine Ausnahmebehandlung einer try-catch-Struktur zu definieren. Das catch-Keyword erwartet in runden Klammern () einen Typ und definiert durch den darauffolgenden Codeblock in geschweiften Klammern {} die eigentliche Behandlungs-Routine. Eine Exception wird mittels dem throw-Operator erzwungen, womit augenblicklich zu dem entsprechenden catch-Teil gesprungen und die Ausführung dort fortgesetzt wird.
|
|
Siehe auch try-catch, throw, ... (catch-all)
Details
Der catch-Block kann als Funktionsdefinition angesehen werden, welche ein Argument mit beliebigen Typ (ausser void) erwartet. Es können beliebig viele catch-Blöcke hintereinander mit jeweils unterschiedlichen Typen definiert werden. Es ist erlaubt, für denselben Typ mehrere Routinen zu definieren, was jedoch nicht sinnvoll ist. Bei Auftreten eines throw-Operators wird die erste Routine aufgerufen, die dem Typ des Operators entspricht.
|
|
Tritt innerhalb des try-Blockes eine Ausnahme auf, die durch keine catch-Routine abgefangen wird, so wird dem Programm das Abort-Signal 6 gesendet, was ohne Abfangung zur Terminierung des Programmes führt. Um sämtliche, auch nicht-definierte Fehler-Typen abzufangen, gibt man anstelle eines Typs drei Punkte ... an, was umgangssprachlich auch als catch-all bezeichnet wird.
Manchmal sieht man die catch-Deklaration ohne Variablenangabe, also nur mit Typ. Dies ist genauso wie bei Funktionen legitim, bedeutet jedoch, dass kein eigentliches Fehlerobjekt übergeben wird.
|
Eine detailiertere Beschreibung über die Benutzung der Typen bei catch-Blöcken findet man bei der try-catch-Struktur.