Thread Wie Log-Verarbeitung ohne Abbruch bewerkstelligen (12 answers)
Opened by YAPD at 2019-05-31 19:09

haj
 2019-05-31 21:09
#190071 #190071
User since
2015-01-07
527 Artikel
BenutzerIn

user image
In dem Code sehe ich zwei Zeilen, die das Ende der Anwendung bewirkenkönnen:
Code (perl): (dl )
Carp::croak $Parameter{ Error };

Das croak bricht (was der Namensbestandteil _Die ja auch suggeriert) das Programm ab. Wenn nur die Ausgabe des Fehlers erfolgen soll, dann verwendest Du einfach Carp::carp:
Code (perl): (dl )
Carp::carp $Parameter{ Error };

Das Programm läuft danach einfach weiter, einen Sinn hat das also nur, wenn das Verhalten auch im Fehlerfall vernünftigen Pfaden folgt.

Die Meldung Can't locate object method "new" via package "Kernel::System::Lo" führt ebenfalls zum Abbruch: Wenn Kernel::System::Lo nicht erfolgreich geladen werden konnte, dann kann auch kein Objekt für die Klasse gebaut werden. Die Meldung unterdrücken kannst Du nur, indem Du entweder die Methode new im Fehlerfall nicht aufrufst oder den Fehler auffängst.

Du kannst (fast) alle "tödlichen" Fehler auffangen und danach weitermachen, Es sollte aber klar sein, welche Konsequenzen der Fehler hat, denn irgendein Zweck steckte ja hinter der gescheiterten Funktion. Du verwendest vermutlich an anderer Stelle schon Perldoc:perlfunc eval, das ist der Grundmechanismus dafür. Der wird allerdings etwas haklig in der Handhabung, wenn in der Fehlerbehandlung selbst Fehler auftreten können (was steht jetzt grade in $@?). Das Modul CPAN:Try::Tiny ist wohl das einfachste der Möglichkeiten, um so etwas robuster zu gestalten.

Mehr zu sagen vermag ich nicht, weil mir doch einiges zum Zusammenhang fehlt...

View full thread Wie Log-Verarbeitung ohne Abbruch bewerkstelligen