Perl 模組中的錯誤
在使用 Perl 程式設計時,我們需要處理兩種不同的情況:
- 在模組中報告錯誤,並引用模組的檔名和行號 - 這在除錯模組時非常有用,或者當您想專門引發與模組相關的錯誤而不是與指令碼相關的錯誤時。
- 在模組中報告錯誤,並引用呼叫者的資訊,以便您可以除錯導致錯誤的指令碼中的行。以這種方式引發的錯誤對終端使用者很有用,因為它們突出了與呼叫指令碼的原始碼行相關的錯誤。
當從模組內部呼叫 **warn** 和 **die** 函式時,它們的工作方式與您預期略有不同。例如,簡單的模組:
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { warn "Error in module!"; } 1;
當從如下指令碼呼叫時:
use T; function();
它將產生以下結果:
Error in module! at T.pm line 9.
這或多或少是您可能預期的結果,但未必是您想要的。從模組程式設計師的角度來看,這些資訊很有用,因為它有助於指出模組本身中的錯誤。對於終端使用者來說,提供的資訊幾乎毫無用處,並且對於除經驗豐富的程式設計師之外的所有人來說,它完全毫無意義。
解決此類問題的方案是 Carp 模組,它提供了一種簡化的方法來報告模組內部的錯誤,並返回有關呼叫指令碼的資訊。Carp 模組提供了四個函式:carp、cluck、croak 和 confess。
廣告