Hallo ihr da!
Ich habe ein recht komplexes System aus Perl Scripten und einer Oracle Datenbank.
...gefunden. Allerdings habe ich noch nicht ganz kapiert, wie man sie richtig anwendet.Was für Erfahrungen habt ihr denn mit Error Handling gemacht?
Gruß und Danke für jeden Tipp
Cruz
gruesse,
ist ja ein ganz schoener brocken. vorab: wenn Du's genau wissen willst, kauf Dir ein buch, und zwar
'Programming the Perl DBI' von O'Reilley. (klingt nach spam, is aber nich, das buch ist wirklich gut)
o.k.
my($dbh) = DBI->connect(TREIBER,user,passwd); #
$dbh->{PrintError} = 1; # PrintError legt fest ob die Fehler automatisch ausgegeben werden sollen oder nicht (schreibt auf STDERR)
# will man das nicht (IIS oder so) einfach auf 0 setzen und weg ist die meldung (default = 1)
$dbh->{RaiseError} = 1; # RaiseError legt fest, ob ein Fehler eine Exception ausloest oder nicht,
# was bedeutet, dass das programm bei Fehlern stirbt (default = 1), sollte man so lassen
Setzt man eval() ein, so kann man Fehler recht gut abfangen
Beispiel:
eval
{
my($dbh) = DBI->connect(TREIBER,user,passwd);
$dbh->{PrintError} = 0;
$sth = $dbh->prepare($mysqlstatement);
$sth->execute();
my($href);
while($href = $sth->fetchrow_arrayref())
{
#mach was draus
}
$sth->finish;
};
if($@)
{
warn "<!-- $mysql
Error:$@
// -->"; #meldung fuer den admin
print "nix geht mit datenbankabfrage!"; #meldung fuer den benutzer
}
Das funktionier bei mir eigentlich recht gut.
btw.: wenn Du staendig die verbindung zum server verlierst, solltest Du Dich, glaub ich, mal mit dem Problem herumschlagen. ist ja nicht normal, nicht mal fuer oracle.
bis auf ein massives sicherheitsproblem (cookie mit datenbank-passwort im klartext) ist das in der DBD::Oracle-manpage beschriebene oracletool.pl ein guter fundus fuer ideen.