Pau*_*han 6 error-handling perl
分配给$是否可以!在Perl中出错?
例如,
if( ! (-e $inputfile))
{
$! = "Input file $inputfile appears to be non-existent\n";
return undef;
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以处理顶层的所有错误.
谢谢.
yst*_*sth 12
如果您分配给$ !,它将被放置在系统errno变量中,该变量只接受数字.所以你实际上可以这样做:
use Errno "EEXIST";
$! = EEXIST;
print $!;
Run Code Online (Sandbox Code Playgroud)
并获取已定义系统错误号的字符串值,但您无法执行所需操作 - 将其设置为任意字符串.这样的字符串将为您提供参数"..."在标量赋值警告中不是数字,并将errno设置为0.
另一个问题是$!可以通过任何系统调用更改.因此,您只能相信它具有您设置的值,直到您进行打印或其他任何操作.您可能想要自己的错误变量.
好吧,文档 说它基本上是系统错误的指标.所以我不会分配它,你只是让你的lib的用户疯了.
改为使用例外:
eval { # this ain't the evil eval
# some code
die $something;
}
if (my $err = $@) {
# exception handling
}
Run Code Online (Sandbox Code Playgroud)
请注意,你可以"抛出"或死掉任何你需要的东西.