Thread error handling (8 answers)
Opened by esskar at 2005-02-21 23:42

esskar
 2005-02-21 23:42
#4459 #4459
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Hi.

wie präsentiert ihr denn Fehler im browser? also wie bindet ihr die fehlermeldungen in eure seiten ein?
mein ansatz war bis jetzt ein Modul das grob so aussieht

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use strict;

BEGIN {
  package Error;

  my @ErrorDefinitions = qw/
     LOGINFAILED
  /;
  for my $i (0 .. $#ErrorDefinitions) {
     eval "use constant $ErrorDefinitions[$i] => '$ErrorDefinitions[$i]';";
  }

  1;
}

package Error;

my %RaisedErrors = ();

sub raise {
 my ($errid, $errmsg) = @_;

 exists $RaisedErrors->{$errid} || $RaisedErrors->{$errid} = [];
 push @{$RaisedErrors->{$errid}}, {MSG => $errmsg} if $errmsg;
}

sub to_html_template {
  my ($tpl) = @_;

  while(my($key, $val) = each %RaisedErrors) {
     $tpl->param("ERROR_$key" => 1);
     $tpl->param("ERROR_$key_msg" => $val;
  }
}

1;


im script kann man dann so schreiben

Code: (dl )
1
2
3
4
5
6
7
8
9
10
use Error;

my $tpl = ...; # HTML::Template

if($login_failed) {
  Error::raise(Error::LOGINFAILED, "Falsches Passwort");
}

Error::to_html_template($tpl);
print $tpl->output;


und das template sieht so aus


Code: (dl )
1
2
3
4
5
6
7
8
9
10
<html>
<body>
<TMPL_IF NAME=ERROR_LOGINFAILED>
Login ist fehlgeschlagen<br />
<TMPL_LOOP NAME=ERROR_LOGINFAILED_MSG>
<TMPL_VAR NAME=MSG><br />
</TMPL_LOOP>
</TMPL_IF>
</body>
</html>


ist aber vielleicht etwas umständlich;

dankbar für tipps!\n\n

<!--EDIT|esskar|1109022244-->

View full thread error handling