Ruby 捕获for循环中的超时异常

Ruby 捕获for循环中的超时异常,ruby,exception,Ruby,Exception,对于目录中的每个文件,我需要对其执行一些操作,然后将结果写入另一个文件。如果引发超时异常,请继续循环的下一次迭代 require 'timeout' timeout_in_seconds = 60 for fl in Dir.glob('/dir/files') begin Timeout::timeout(timeout_in_seconds) do #do something here to get $results File.open('new_file

对于目录中的每个文件,我需要对其执行一些操作,然后将结果写入另一个文件。如果引发超时异常,请继续循环的下一次迭代

 require 'timeout'
 timeout_in_seconds = 60

 for fl in Dir.glob('/dir/files')
     begin 
     Timeout::timeout(timeout_in_seconds) do 
 #do something here to get $results
 File.open('new_file', 'w') { |file| file.write(results) }
     end
     rescue Timeout::Error
 next
 end
从shell运行错误为:

  syntax error, 'unexpected kRESCUE, expecting kEND
rescue Timeout::Error

关于如何更正此问题,您有什么想法吗?

您在上面的代码中遗漏了两个
end
。把它写在下面

require 'timeout'
timeout_in_seconds = 60

 for fl in Dir.glob('/dir/files')
     begin 
     Timeout::timeout(timeout_in_seconds) do 
       #do something here to get $results
       File.open('new_file', 'w') { |file| file.write(results) }
     end
     rescue Timeout::Error
      next # although I am not sure why this is needed.
     end
 end

您在上面的代码中遗漏了两个
end
。把它写在下面

require 'timeout'
timeout_in_seconds = 60

 for fl in Dir.glob('/dir/files')
     begin 
     Timeout::timeout(timeout_in_seconds) do 
       #do something here to get $results
       File.open('new_file', 'w') { |file| file.write(results) }
     end
     rescue Timeout::Error
      next # although I am not sure why this is needed.
     end
 end

rescue
应位于end子句之前

require 'timeout'
timeout_in_seconds = 60

for fl in Dir.glob('/dir/files')
  begin 
    Timeout::timeout(timeout_in_seconds) do 
    #do something here to get $results
    File.open('new_file', 'w') { |file| file.write(results) }
  rescue Timeout::Error

  end
end

rescue
应位于end子句之前

require 'timeout'
timeout_in_seconds = 60

for fl in Dir.glob('/dir/files')
  begin 
    Timeout::timeout(timeout_in_seconds) do 
    #do something here to get $results
    File.open('new_file', 'w') { |file| file.write(results) }
  rescue Timeout::Error

  end
end

呃,好吧,否决票是非常有用的。减少摩擦/多余的岗位。也许对这一切最好是圆滑的:-)可能是:-)但这里的人也通过回答来学习,所以无论什么时候出了问题,其他人都应该让他知道,出了什么问题。这可能是一个伟大的教训。。。我想……:)呃,好吧,否决票是非常有用的。减少摩擦/多余的岗位。也许对这一切最好是圆滑的:-)可能是:-)但这里的人也通过回答来学习,所以无论什么时候出了问题,其他人都应该让他知道,出了什么问题。这可能是一个伟大的教训。。。我想……:)