Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Ausnahmen
Der CATCH-Phaser
Der try-Block ist bequem, behandelt aber den ganzen
Block als eine Einheit: Entweder er funktioniert oder nicht. Der
CATCH-Phaser gibt Ihnen feinere Kontrolle — er erlaubt es,
eine Ausnahme innerhalb des Blocks zu behandeln, in dem sie
auftrat, und zu entscheiden, was zu tun ist.
CATCH ist ein Phaser, wie jene, die Sie im Abschnitt über den Programmfluss
kennengelernt haben. Sie schreiben ihn irgendwo in einen Block; er läuft
nur, wenn dort eine Ausnahme geworfen wird. Die Ausnahme steht als Thema
$_ zur Verfügung:
{
die 'Boom!';
CATCH {
default {
say 'Caught: ' ~ .message;
}
}
}
say 'after';Das Programm gibt aus:
Caught: Boom!
afterDer default-Block innerhalb von CATCH
behandelt jede Ausnahme. Sobald er gelaufen ist, gilt die Ausnahme als
behandelt, das Programm hält also nicht an — die Ausführung geht hinter
dem umgebenden Block weiter, weshalb after ausgegeben
wird.
Ohne das CATCH hätte das die das Programm
beendet, bevor after erreicht werden konnte.
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Übungen
Dieser Abschnitt enthält 3 Übungen. Sehen Sie sich alle Themen dieses Abschnitts an, bevor Sie mit den Übungen beginnen.