Thread Programm-Abbruch verhindern: Kei nAbbruch wenn open-funktion fehler (14 answers)
Opened by rommi at 2007-03-17 12:39

topeg
 2007-03-17 18:55
#75112 #75112
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Um mich kurz zu fassen. Es macht keinen Sinn ein "die" zu unterdrücken, denn immerhin steht ein "die" im Programm immer dort, wo man das Programm bei einem Fehler beeneden will. Willst du das nicht, benutze dort "warn" oder ähnliches. Das das Programm an der stelle "open(...) or die" abbricht ist von dir offensichtlich vorgesehen, denn sonst hättest du doch "unless(open(...)){warn(...)}else{...}" o.ä. geschrieben.

Aber da Perl auch für solche Fälle etwas bietet kannst du auch die "die" Funktion überschreiben:
Code (perl): (dl )
$SIG{__DIE__}=sub{ warn "Fehler: $_[0]" };

Hier wird nun bei jedem "die" im Code nicht der fehler ausgeben und dann das Programm beendet sondern nur der Fehler ausgeben. Man sollte sich aber gündlich Überlegen was man da macht, denn damit wird das Verhalten von __JEDEM__ "die" im Code verändert!

Und Konstrukte wie
Code (perl): (dl )
open(DAT,'<',$datei) or die "Fehler ($!)"
kann dann zu einem sehr seltsamen Verhalten des Programmes führen, da der nachfolgende Code ausgeführt wird. Wenn die datei nicht geöffnet wurde kann daraus auch nicht gelesen werden und diese kann dann auch nicht wieder geschossen werden.\n\n

<!--EDIT|topeg|1174150911-->

View full thread Programm-Abbruch verhindern: Kei nAbbruch wenn open-funktion fehler