hi Sven,
Objektorientiertes Programmieren ohne Exceptions ist wie Radfahren mit platten Reifen: Es geht zwar, aber man kommt irgendwie nicht wirklich vorwärts. :)
Das gefällt mir außerordentlich gut ;)
Da komme ich gerne zurück auf Deine Aussage, dass sich ein Perl-Programmierer um jeden Scheis selber kümmern muss, gerade das ist nämlich in Perl ganz einfach, guck:
# Controller, dem URL http://example.com/admintools.html zugeordnet
sub admintools{
my $self = shift;
die "Nicht angemeldet!\n" if $self->{LOGIN_GROUP} ne $self->{REQUIRED_GROUP};
}
Dahinter steckt Perl's Exception-Model: Ich werfe in der Methode eine Exception, die ich später auffange, um mit der eigens notierten Meldung eine klar verständliche Fehlerseite ausgeben zu können (beachte das \n am Ende der Meldung, das unterdrückt den Backtrace, weil diese Meldung für den Besucher bestimmt ist und nicht für den Programmierer).
Aber das ist nicht alles. Perl gibt mit dem Modul 'UNIVERSAL' dem Programmierer die Möglichkeit, abzufragen, ob es in der Klasse eine bestimmte Methode gibt:
my $code = $self->can('admintools');
Habe ich den $code, kann ich den ausführen und dabei auf Exceptions testen:
eval{$self->$code};
Ist eine Exception aufgetreten, steht der Fehlertext in $@, Seite ausgeben, fertig.
Hotti