忽略Perl END块中的错误

时间:2013-01-09 23:47:34

标签: perl exception-handling

如何忽略Perl die()块中出现的END

现在我得到了

  

END失败 - 呼叫队列中止

错误会使调用脚本冒泡。

3 个答案:

答案 0 :(得分:8)

将您的结束块放在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");
    }
}

答案 1 :(得分:5)

将代码放在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";
}

答案 2 :(得分:3)

Try::Tinyeval的绝佳包装器,允许您显式处理运行时异常。