Warum sollte ich Karpfen statt warnen in Perl?
Menschen halten, gebe mir Beispiele mit Karpfen statt warnen. Warum? Was macht den Karpfen besser als warnen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Menschen halten, gebe mir Beispiele mit Karpfen statt warnen. Warum? Was macht den Karpfen besser als warnen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Karpfen gibt Ihnen mehr info, wie und wo die Meldung kommt von (Kontext -)
produziert
irgendwie dumm für dieses kleine Programm, aber in handliches kommt, wenn Sie will wissen, wer die Methode aufgerufen, dass die carp ' Ing.
Benutze ich
warn
für Skripten und einfache Programme, undCarp
innerhalb aller Module. DieCarp
Subroutinen verwenden, den Dateinamen und die Zeilennummer, wo Ihre aktuelle Unterprogramm aufgerufen wurde, so dass es leichter zu finden, wer das problem verursacht (nicht nur dort, wo sich das problem manifestiert hat).Damian empfiehlt
Carp
stattwarn
im "Reporting-Fehler" in Perl Best Practices, aber das macht nicht den Unterschied zwischen Skripts, die als top-level-code-Konstrukte und-Module als Komponenten, die die Programme verwenden.Habe ich meist nicht darum gekümmert, dass in letzter Zeit, weil ich habe mit Log::Log4perl, um alle, die.
Karpfen funktioniert besser für das Debuggen innerhalb von Modulen. Wenn Sie nur schreiben ein einfaches Skript, gibt es keinen Vorteil. Von der Karpfen Dokumentation:
Carp
meldet Fehler aus der Anrufer-Perspektive. Dies ist nützlich für die Module, wo Sie in der Regel warne davor, durch falsche Nutzung (z.B. ein fehlendes argument) und identifizieren Sie die Stelle, wo der Fehler aufgetreten im Gegensatz zu, wo es war erkannt. Besonders wichtig ist dies für utility-Funktionen, die verwendet werden könnten, an vielen stellen.Meisten Autoren verwenden
warn
in scripts undcarp
- in-Module. Gelegentlich benutze ichwarn
innerhalb eines Moduls, wenn ich möchte, dass die Fehlermeldung auf ein problem in der Modul-Implementierung (z.B. ein Fall, sollte es aber nicht.) Es ist vertretbar, dasscluck
wäre besser, in solchen Situationen, denn es bietet einen vollen Stapel backtrace.