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。

更新于: 2019年11月29日

148 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.