关于 Ruby 的一个问题?

  • 回答 (2)
  • 关注 (0)
  • 查看 (55)

最近开始用Ruby进行编程,并且正在寻找异常处理。

想知道是否在C#中ensure的Ruby等价物finally?比如:

file = File.open(""myFile.txt"", ""w"")
begin
  file << ""#{content} \n""
rescue
  #handle the error here
ensure
  file.close unless file.nil?
end
或者应该这样做?
#store the file
file = File.open(""myFile.txt"", ""w"")
begin
  file << ""#{content} \n""
  file.close
rescue
  #handle the error here
ensure
  file.close unless file.nil?
end
HERO坑货HERO坑货提问于
Ne_biubiubiu这就是世界结束的方式回答于

如果你想确保一个文件被关闭,你应该使用以下块的形式File.open:

File.open("myFile.txt", "w") do |file|
  begin
    file << "#{content} \n"
  rescue
  #handle the error here
  end
end
帅的惊动我国计算机大神回答于

仅供参考,即使在该rescue部分中重新引发了异常,ensure该代码块也将在代码执行继续到下一个异常处理程序之前执行。例如:

begin
  raise "Error!!"
rescue
  puts "test1"
  raise # Reraise exception
ensure
  puts "Ensure block"
end

扫码关注云+社区

领取腾讯云代金券