Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]536[/thread]

Debug Meldungen aus Modulen ausgeben: Wie kommen die Fehlermeldungen zum User?



<< >> 4 Einträge, 1 Seite
Thorium
 2005-07-22 13:50
#5328 #5328
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Moin moin ihrs...

Ich schreibe gerade wiedermal ein CGI Script, welches verschiedene, eigengebaute Module benutzt. Sie sind getrennt nach Aufgabenbereich: Eines für Datenbank, eines für Output u.s.w.
Nun stellt sich mir die Frage, wie ich den User (oder sonnstwen) informiere, wenn etwas scheisse gelaufen ist. Nehmen wir an, verschiedene - nicht kritische - Operationen schlagen fehl und ich will den Benutzer darüber informieren.
Ich habe das Script logisch nach Dateninput, Datenverarbeitung und Datenoutput getrennt. Der header für das CGI-Script wird also erst am Ende des Scripts ausgegeben, wenn die Verarbeitung schon abgeschlossen wurde (vielleicht will ich ja einen redirect-header oder sonnstwas ausgeben). Wenn jetzt in einem meiner Module ein Fehler geschiet (z.B. falsches Passwort), wie zeige ich dem User dies an? Ein "die $!" ist nicht schön, und ein einfacher print geht nicht, weil der header noch nicht ausgegeben wurde. Und jeweils bei Fehlermeldungen den header auszugeben ist auch sehr hässlich, ausserdem wiederholt sich dann die headerausgabe überall, wo ich einen Fehler auszugeben gedenke.
Wie löst ihr das? Erstellt ihr ein debug-Modul, welches ihr überall einbindet? Ich habe mir die Frage schon öfters gestellt aber habe das Problem immer umgangen. Ich will jetzt aber eine möglichst schöne und korrekte Variante - kein Gebastel. Welche Möglichkeiten habe ich?

Gruss
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
Ronnie
 2005-07-22 13:56
#5329 #5329
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
use CGI::Carp qw/fatalsToBrowser/;

dann kannst du ganz normal die verwenden. Schau mal in die Doku von CGI::Carp.\n\n

<!--EDIT|Ronnie|1122026325-->
Thorium
 2005-07-22 14:02
#5330 #5330
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja, danke Ronnie
Den kannte ich aber schon. Es geht mir hier nicht darum, eine hässliche Fehlermeldung auszugeben und mein Script dann verrecken zu lassen. Das Script soll jegliche Meldungen aus Modulen selber behandeln können und dann dem Output-Modul übergeben, welches es dann gut formatiert ausgeben kann.
Es muss ja nicht immer eine unerreichbare Datenbank sein, die zu einem die führt - sondern auch irgendwas anderes - z.B. debug Meldungen, die als Kommentar im HTML-Code erscheinen oder sonnstwas..
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
Ronnie
 2005-07-22 14:09
#5331 #5331
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Du kannst es evtl. trotzdem verwenden mit einem eigenen Handler?:
Code: (dl )
1
2
3
4
5
6
7
8
9
    use CGI::Carp qw(fatalsToBrowser set_message);
BEGIN {
sub handle_errors {
my $msg = shift;
print "<h1>Oh gosh</h1>";
print "<p>Got an error: $msg</p>";
}
set_message(\&handle_errors);
}

vileicht ist auch Error.pm für dich interessant, dann kannst du die Exceptions abfangen und selbst behandeln. http://search.cpan.org/...\n\n

<!--EDIT|Ronnie|1122027107-->
<< >> 4 Einträge, 1 Seite



View all threads created 2005-07-22 13:50.