Schrift
[thread]8848[/thread]

Programm-Abbruch verhindern: Kei nAbbruch wenn open-funktion fehler (Seite 2)

Leser: 1


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
renee
 2007-03-17 21:14
#75114 #75114
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Warum einen Signal-Handler schreiben, wenn man das Problem anders lösen kann?

@rommi: Warum hast Du meinen Vorschlag nicht ausprobiert?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
PerlProfi
 2007-03-18 12:43
#75115 #75115
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
@rommi, kann es sein, dass du nach soetwas wie open() or next; suchst ? Das ist nämlich genau das selbe was renee geschrieben hat...
betterworld
 2007-03-18 16:44
#75116 #75116
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=topeg,17.03.2007, 17:55]
Code (perl): (dl )
$SIG{__DIE__}=sub{ warn "Fehler: $_[0]" };
[/quote]
Mit solchen DIE-Handlern sollte man immer sparsam umgehen, denn damit kann die Funktion von externen Modulen, die ihrerseits ein bisschen Exception-Handling machen, gestoert werden. eval{} ist da meist eine bessere Loesung.

Aber in diesem Fall hilft es ja eh nicht wirklich etwas, wie opi schon schreibt. Man muss die Dinge auch nicht komplizierter machen, als sie sind. Ein warn und next ist viel schneller hingeschrieben und auch lesbarer.
ptk
 2007-03-18 19:05
#75117 #75117
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=betterworld,18.03.2007, 15:44][quote=topeg,17.03.2007, 17:55]
Code (perl): (dl )
$SIG{__DIE__}=sub{ warn "Fehler: $_[0]" };
[/quote]
Mit solchen DIE-Handlern sollte man immer sparsam umgehen, denn damit kann die Funktion von externen Modulen, die ihrerseits ein bisschen Exception-Handling machen, gestoert werden. eval{} ist da meist eine bessere Loesung.[/quote]
Zumindest sollte man im eigenen Code
Code: (dl )
local $SIG{__DIE__} = ...
schreiben.

Externe Module können sich selbst vor Problemen schützen, indem sie den __DIE__-Sighandler in evals explizit ausschalten. Das Konstrukt
Code: (dl )
eval {local $SIG{__DIE__}; ... }
findet man beispielsweise in vielen Tk-Modulen.
rommi
 2007-03-19 21:10
#75118 #75118
User since
2005-03-03
54 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

bin wohl ein bisschen überfällig mit meiner Antwort! :-)

Das mit dem open() or next, oder ne if-Anweisung ist mir bekannt. @renee ausprobieren musste ich nicht da ich das Konstrukt kenne :-)

Danke an Alle! Ich glaube ich bin da irgendeinem Phantasie-Parameter nachgejagt! Kommt vor :-)

Gruss
rommi
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2007-03-17 12:39.