Hallo pl,
vielleicht verstehe ich error.pm ja nicht und was ein atomarer Block ist weiß ich auch nicht (bin ja ein Perl-Blinder), aber wäre damit nicht dies machbar:
try
{
my $sca = Scaliger->new( date => $self->{STASH}{date});
# Platzhalter fürs HTML Template befüllen
$self->{STASH}{result} = 'Das Datum ist gültig!';
# code gekürzt
$self->{STASH}{isleap} = $sca->leap eq 'Y' ? 'Ja' : 'Nein';
}
catch Error::Simple with {
# Eingegebenes Datum ungültig
my err = shift;
$self->{STASH}{result} = $err->{message};
}
oder so ähnlich, das habe ich im catch vermutlich falsch geschrieben.
Was mir beim Perl-Errorhandling aber fehlt, ist ein Exception-Wurf über mehrere Aufrufebenen hinweg. Wenn ich in C# oder PHP einen try/catch Block mache und im try eine Funktion X gerufen wird, die eine Funktion Y ruft, die eine Funktion Z ruft wo eine Exception geworfen wird, dann kann ich das im catch fangen, ohne dass X und Y was von der Exception wissen müssen. Geht das in Perl auch?
Zugegeben, solche Exception-Weitwürfe haben ihre eigenen Probleme, was man in Java löst, dass man deklarativ beichten muss, dass man jemand aufruft der eine Exception wirft und man sie nicht zu fangen gedenkt...
Rolf
sumpsi - posui - clusi