Try - Catch: Try::Tiny
Veröffentlicht von Thomas Fahle am (Permalink)
Das recht neue CPAN-Modul Try::Tiny von יובל קוג'מן (Yuval Kogman) bietet einen einfachen Ausnahmebehandlungs-Mechanismus.
Wer nicht zwingend auf alle Bells und Whistles von TryCatch angewiesen ist, sollte Try::Tiny mal ausprobieren.
Beispiel: Fehler beim Einbinden eines Modul zur Laufzeit abfangen
#!/usr/bin/perl use strict; use warnings; use Try::Tiny; try { require Foo; } catch { # $_ enthaelt Fehlermeldung if ( /^Can't locate Foo\.pm in \@INC/ ) { # ignore warn "Harmloser Fehler: Foo kann nicht geladen werden\n"; } else { die "Fataler Fehler: $_"; # Alle anderen Fehler sind fatal } };
Das Programm erzeugt folgende Ausgabe:
Harmloser Fehler: Foo kann nicht geladen werden
Beispiel: Eigener Signalhandler
#!/usr/bin/perl use strict; use warnings; use Try::Tiny; try { local $SIG{ALRM} = sub { die "Zeitlimit überschritten $!" }; alarm(2); sleep(5); # Lang laufende Operation } catch { # $_ enthaelt Fehlermeldung if ( /Zeitlimit/i ) { warn "Timed out\n"; } else { die "Anderer Fehler: $_\n"; } }; alarm(0);
Das Programm erzeugt folgende Ausgabe:
Timed out