One*_*oob 3 perl exception-handling
如何忽略die()Perl END块中发生的情况?
因为现在我得到了
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");
}
}
Run Code Online (Sandbox Code Playgroud)
将代码放在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";
}
Run Code Online (Sandbox Code Playgroud)