Thread croak und Unterdrückung des caller mit "\n" (11 answers)
Opened by rosti at 2012-01-22 21:41

rosti
 2012-01-23 18:48
#155620 #155620
User since
2011-03-19
3492 Artikel
BenutzerIn
[Homepage]
user image
Danke an Alle!!
(auch wenn meine Antwort hier steht)

Das Thema habe ich heute auch bei den Perlmonks gefunden. Die Philosophie ist diese hier:

Willst Du einen Backtrace, nimm Carp.

Also: Was will ich? _keinen_ Backtrace, sondern nur die Fehlermeldung. Ergo: Es reicht ein
Code (perl): (dl )
die "Fehlermeldung\n";
und hier wird der Trace auch unterdrückt.

Beispiel: http://rolfrost.de/map/kalender/gregorian.html

@Gwen: Auf meiner Testumgebung ist ein uralt-Perl (Asche über mich).

Ansonsten ist das Exception-Modell von Perl auch einer der Vorzüge gegenüber anderen Programmiersprachen. Beispiel an meinem Modul:

Der Konstruktor erwartet einen vom drei Parametern, "jd", "gregdate" oder "julidate". Wurde kein Parameter mitgegeben, setzt das Modul an "gregdate" das aktuelle Datum. Das ist die Initialisierung, im Konstruktor gehts dann weiter mit der Validierung:

Code (perl): (dl )
1
2
3
$self->_initialize; # einer der drei Werte ist gesetzt
eval{ $self->_validate };
return $@ ? undef : $self;


Die Einfachheit besteht nun darin, innerhalb _validate() oder nachgelagerten privaten Methoden (weitere Berechnungen) eine Exception zu erzeugen, wenn irgendwas nicht stimmt. Der Fehlertext steht dann in $EVAL_ERROR ($@), wenn das Objekt nicht erstellt werden konnte (Anwendung prüft). Einfacher gehts nicht ;)

Schöne Grüße,
Rolf

View full thread croak und Unterdrückung des caller mit "\n"