0

私は次のコードを持っています:

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)が閉じられるようにする正しい方法は何ですか?

4

1 に答える 1

6

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
于 2012-11-01T11:43:48.583 に答える