Thread MySQL: Wie funktioniert UPDATE und INSERT mit Perl
(20 answers)
Opened by Gast at 2008-01-13 18:07 Quote Das hängt wohl lediglich von den Einstellungen ab. Quote Ist alles kein Grund keine Exceptions zu verwenden. RaiseError ist dafür da das automatisch bei Fehler ausnahmen wirft, anstatt das Fehler durch return codes zurück gegeben wird, die man auswerten muss, und es auch noch vergessen kann. Möchte man explizit fehler zulassen so arbeitet man mit block "eval {}" oder eben Modulen wie Try::Tiny oder TryCatch um ausnahmen abzufangen. Und auch hier ist es von Vorteil wenn automatisch Exceptions geworfen werden. Da man so auch eine reihe von Befehlen abfangen kann. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 eval { $sth->prepare(...); $sth->execute(...); $sth->prepare(...); $sth->execute(...); $sth->prepare(...); $sth->execute(...); }; if ( $@ ) { warn "Shit meine Logische einheit xyz zu machen ist fehlgeschlagen" # ... weitere fehlerbehanldung } Bei dir hingegen mischt du code mit fehlerbehandlung. Code (perl): (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 $sth->prepare(...) or do { warn "Shit meine Logische einheit xyz zu machen ist fehlgeschlagen" # ... weitere fehlerbehanldung }; $sth->execute(...) or do { warn "Shit meine Logische einheit xyz zu machen ist fehlgeschlagen" # ... weitere fehlerbehanldung }; $sth->prepare(...) or do { warn "Shit meine Logische einheit xyz zu machen ist fehlgeschlagen" # ... weitere fehlerbehanldung }; $sth->execute(...) or do { warn "Shit meine Logische einheit xyz zu machen ist fehlgeschlagen" # ... weitere fehlerbehanldung }; $sth->prepare(...) or do { warn "Shit meine Logische einheit xyz zu machen ist fehlgeschlagen" # ... weitere fehlerbehanldung }; $sth->execute(...) or do { warn "Shit meine Logische einheit xyz zu machen ist fehlgeschlagen" # ... weitere fehlerbehanldung }; Das ist unleserlicher, schwer nachzuvollziehen und viel zu viel Tipparbeit. Und du geht wie immer das risiko ein irgendwo eine abfrage mit "or do" etc. zu vergessen. Ansonsten kannst du Den Fehler genauso auswerten wie ohne Exception. Der Fehler liegt weiterhin in $DBI::errstr oder besser ist man wertet dann $@ ab, wo der dann auch drin landet. Quote All die Punkte sind komplett unwichtig. Fehler sollten grundsätzlich Exceptions werfen und über einen try{} catch{} Mechanismus abgefangen werden. So macht es jede neue Programmiersprache und wird es auch Perl 6 machen. Es nicht so zu machen ist einfach Old School C Hackish. Schau dir halt nochmal PBP an zum Thema Exceptions und Fehlerhandling. Wenn du übrigens korrekte und vernünftige Exception Objekte wirfst ist das Fehlerhandling sogar leichter. Leider macht davon fast kein Modul von gebrauch. In der Hinsischt ist die Perl Community immer noch ein zurück gebliebenes Kind. Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|