Thread fehler abfangen mit eval
(13 answers)
Opened by supersucker at 2005-06-17 19:58
hi zusammen,
ich hab mir einen parser geschrieben, der alle datensätze aus gegebenen dateien einliest. manche dieser datensätze sind nun fehlerhaft, und genau die möchte ich überspringen, dabei verhält sich aber "eval" nicht so wie ich das erwartet habe. Code: (dl
)
1 #!/usr/bin/perl wenn ein datensatz fehlerhaft krieg ich bei den "substr"-aufrufen im eval-block haufenweise fehlermeldungen (substr out of range usw, was ja auch ok ist, denn ich weiss das manche datensätze fehlerhaft sind), was ich aber möchte ist, das zum einen keine fehlermeldungen kommen (ich dachte ein eval würde die unterdrücken), zum anderen soll der datensatz übersprungen werden und der nächste datensatz eingelesen werden. seltsammerweise aber scheint es so, als würde der if-block niemals betreten werden, die print-anweisung Code: (dl
)
print "skipping fragment \n"; im if-block wird nicht auf stdout geschrieben, aber es werden haufenweise exceptions im eval-block geworfen. ich dachte alle fehler die im eval-block auftauchen werden unterdrückt, bzw. deren ausgabe wird unterdrückt, die variable $@ wird gesetzt und ich kann mich dann zur laufzeit um die fehlerbehandlung kümmern... ja, aber wie schon gesagt, der if-block scheint nie betreten zu werden.... hab ich bei der fehlerbehandlung mit eval was falsch verstanden? wenn ja, wie schaffe ich es zum einen die ausgabe der fehler im eval-block zu unterdrücken bzw. zum nächsten datensatz zu springen? danke im voraus |