Thread Zusätzliches bei SQL-Fehler ausgeben: Problem... (9 answers)
Opened by pktm at 2004-02-27 21:58

Strat
 2004-02-28 12:30
#31794 #31794
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
also wenn $dbh->errstr() ausgegeben wird, muss auch "Zeile: $line " ausgegeben werden. Kann es sein, dass da an einer anderen Stelle ein Fehler auftritt, wo kein die "Zeile: $line " . $dbh->errstr() steht?

Nebenbei: das || wird folgendermaszen ausgewertet:
Code: (dl )
my $sth = ( $dbh->prepare($cmd) || die "Zeile: $line" . $dbh->errstr );

Beim die bleibt es sich egal, aber wenn du da sonst was machen willst, wird da bei einem Fehler der rechte Teil des ||-Ausdruckes an $sth ueberwiesen. Wenn du da anstelle von die print schreibst, bekommst du einen schoenen Fehler... Mit or anstelle von || umgehst du dieses potentielle Problem.

ich verwende or die so gut wie nie, sondern lieber eine syntax wie die folgende:
Code: (dl )
1
2
3
4
5
6
7
my $sth = $dbh->prepare($cmd);
unless ($sth) {
die "Zeile: $line" . $dbh->errstr();
}
else {
# ...
}

weil ich dann einfach das die durch eine vernuenftige Fehlerausgabe ersetzen kann (z.B. &WriteHtmlError($r, $dbh, $errorMessage) oder so), was gerade bei CGI- und mod_perl-Scripten sehr wichtig sein kann, weil da ein 500er-Fehler selten einen guten Eindruck hinterlaesst.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Zusätzliches bei SQL-Fehler ausgeben: Problem...