确保在Ruby中关闭文件,并进行救援并确保

时间:2012-11-01 11:41:03

标签: ruby file

我有以下代码:

begin
   @output_file = File.open("output.txt", "w")
   File.read(@input_file).each_line do |line|
   taxify_line(line)
end
rescue => e
   p "Smz went wrong..."
end
@output_file.write("Last line of output")
@output_file.close unless @output_file.nil?

确保无论何时捕获异常,两个文件(@input_file和@output_file)都已关闭的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

rescue子句应该在begin..end块内。而且,令人惊讶的是,ensure条款完全符合您的想法

begin
   @output_file = File.open("output.txt", "w")
   File.read(@input_file).each_line do |line|
     taxify_line(line)
   end
rescue => e
   p "Smz went wrong..."
ensure
  @output_file.write("Last line of output")
  @output_file.close unless @output_file.nil?
end