我可以在阻止异常处理时重做

时间:2015-07-08 06:29:06

标签: perl exception-handling while-loop

我的异常处理捕获异常,但重做会引发一些错误。

我正在使用第三方API来获取超过500万个数据,但是api经常会抛出500个错误。

我正在使用异常处理,如果发生任何错误,我想重做循环

eval{
while(my $productsRef = $se->iterate_products()) {
print Dumper($productsRef);
}
};
if ($@){
    sleep 30;
    redo;
}

如果发现某些异常,上面的代码会抛出错误

cant "redo" outside the loop

1 个答案:

答案 0 :(得分:2)

你不能在循环之外redobasic-block

REDO_EVAL: {
  my $ok = eval {
    while(my $productsRef = $se->iterate_products()) {
      print Dumper($productsRef);
    }
    1;
  };
  if (!$ok){
    # print "$@\n";
    sleep 30;
    redo;
  }
}