Thread Errorhandling
(26 answers)
Opened by Oliver at 2020-03-13 10:10
Bei solchen umfangreichen Ausgaben (wenn's schon mal einen "Debug mode" gibt, das ist nicht selbstverständlich) lohnt es sich dann doch, einen Blick auf die Logging-Frameworks wie Log::Log4perl zu werfen. Leider gibt's da fast schon zu viele Frameworks mit unterschiedlicher Terminologie - der Fluch von TIMTOWTDI. Was all diesen Frameworks gemeinsam ist: Sie haben einen "Level" oder "Severity", das Deinem CriticalState entspricht. Und alle diese Frameworks sorgen dafür, dass jeder einzelne Eintrag einen Zeitstempel bekommt. Zudem haben sie auch eine Konfigurationskomponente, die auswertet, welche Meldungen wohin geschickt werden: Ans Handy, an syslog, in eine Logging-Datei, auf den Bildschirm. Das kann in jeder Umgebung dann anders eingestellt werden und erlaubt Dir auch, DEINE Fehlermeldungen separat zu steuern: Bei Log::Log4perl heißt das "category", bei syslog "facility".
Ein Hilfsmittel zur Erkennung von "Dingen, an die der Programmierer nicht gedacht hat", ist autodie. Das sorgt dafür, dass die Systemschnittstellen, die im Fehlerfall einfach undef liefern, statt dessen mit die und einem brauchbaren Meldungstext sterben. Es liegt aber wiederum an Dir, zu entscheiden, ob Du dann das dann mit eval, Try::Tiny oder einem anderen Mechanismus abfängst oder nicht. |