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

Siehe auch

Weitere Posts