![]() |
![]() |
Ausnahmebehandlung (2) |
G.Eichelsdörfer
Staatliche Technikerschule Weilburg |
Eine in einem try
-Block aufgetretene Ausnahme wird mit
catch
aufgefangen und kann bearbeitet werden:
// try-Block
|
Statt der drei Punkte hinter catch
wird zumeist der Typ einer
Ausnahmeinformation, kurz der Ausnahmetyp, zusammen mit einer Ausnahmevariablen
(Objekt, Instanz) angegeben.
Dann werden an dieser Stelle auch nur Ausnahmen dieses Typs behandelt.
Beispiel:
catch (int id) // Es werden nur Ausnahmen des Typs int behandelt.
|
Falls z.B. eine Ausnahme des Typs float eintritt, wird sie an dieser Stelle nicht behandelt.
Antwort: Sie werden geworfen.
Eine Funktion, die eine Ausnahme meldet (nicht bearbeitet!!!), wirft diese aus.
Beispiel:
Diese Funktion wirft eine Ausnahme vom Typ int. Das erkennen Sie an der Anweisung throw 1 (s.u.).
double Kehrwert(double x)
|
Vorsicht!!!
Der Ausnahmetyp, hier int, hat nichts mit dem Parametertyp oder dem Resultatstyp zu tun.
Er ist der Typ für die Ausnahmeinformation.
Für den Ausnahmetyp gibt es in C++ keine Einschränkung. Er kann also ebenso double, ein String, irgendein Array, ein struct oder noch besser eine Klasse (OOP) sein.
Die folgende Sequenz behandelt die Ausnahme "Division durch Null". Im Ausnahmefall wird der y-Inhalt nicht ausgegeben. Deshalb sollte diese Ausgabe nicht hinter der Fehlerbehandlung stehen.
try
|
Ein try-catch-Konstrukt ist eine Anweisungssequenz. Im Allgemeinen folgen dahinter weitere Anweisungen, die anschließend ausgeführt werden.
Komplette Beispiele folgen.