如何忽略die()
出现在 PerlEND
块中的 a?
现在我得到了
END 失败--呼叫队列中止
并且错误冒泡了调用脚本。
将您的结束块放在一个eval { .... }
- 这应该可以防止您描述的行为。
#!/usr/bin/perl
print("hi there!\n");
END {
eval{
print("goodbye\n");
die("this can't hurt....");
};
#detect if an error occurred in the eval
if ( $@ ){
print ("an error occurred: $@\n");
}
}
将您的代码放在 eval 块内,如果您想检索 die 提供的错误消息,您可以使用块外的 if 条件捕获。
#!/usr/bin/perl
my $val=1;
eval
{
print "Inside Eval\n";
if($val == 1)
{
die "hello world\n";
}
print "End of Eval\n";
};
if ( $@ )
{
print "Error message - $@" . "\n";
}
Try::Tiny
是一个优秀的包装器eval
,允许你显式地处理运行时异常。