【发布时间】:2011-05-28 15:37:03
【问题描述】:
我在 Perl 脚本中有 2 行彼此靠近,可能会抛出 __WARN__。如果第一个抛出,那么我只想从函数中返回而不是尝试继续。
我知道如何在这两行之前设置一个处理程序,以便我可以报告错误等:
local $SIG{__WARN__} = sub {
my $e = shift;
# log the error etc.
return;
};
# possibly warning-resulting line 1
# possibly warning-resulting line 2
但是这发生在两条线上。我宁愿它只是捕获第一个实例并从函数返回。但是该处理程序中的返回只返回处理程序,而不是外部函数。
有没有办法在处理信号时从函数中返回?
【问题讨论】:
-
您期望什么样的警告?如果您从一开始就知道警告的原因,为什么不在执行第 1 行和第 2 行之前在您的子程序中考虑它?