1

我正在尝试比较 2 个文件。如果只出现 1 个文件,它将创建一个副本。那么是否可以在使用时重新调用该方法begin..rescue..end

def differ()
begin
  file_today = read_file("/etc/hosts.deny")
  file_yesterday = read_file("/etc/hosts.deny_old")
  content = Diffy::Diff.new(file_yesterday, file_today)
rescue
  copy_log
  differ #call itself?!O_o Well, after the copy has been created!
end
  return content
end

它是“不同的#call 本身?!O_o 好吧,在创建副本之后!” 我不能去上班。

4

1 回答 1

2

您可以retry在救援子句中使用关键字来重新启动它。

编辑:以下是免费版Programming Ruby的更多信息:

“redo 语句导致循环重复当前迭代。但有时,您需要将循环重新回到最开始。retry 语句只是票。重试重新启动任何类型的迭代器循环。重试将重新评估任何重新启动迭代器之前的参数。”

编辑:我意识到这种重试行为在 1.9 中已被弃用。只要知道重试通常用于重新执行引发异常的代码块。确保在重试之前修复了导致异常的任何原因 - 否则您将陷入无限循环!

于 2013-05-01T22:37:57.520 回答