0
我有以下代碼:確保在Ruby中關閉文件,救援和確保
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 )已關閉?
感謝您的回答。如果我不想在出錯時寫入@output_file,該怎麼辦?所以,避免這樣做:@ output_file.write(「輸出的最後一行」) - 我應該在那裏放置那一行? –
在你的主體(搶救前)。 –
我在Pragmatic programming ruby book中閱讀以下內容;並已變得有些困惑。可有一個人請清除此設置: #start_of_code F = File.open( 「testfile的」) 開始 #..流程 救援 #..處理錯誤 確保 f.close 結束 #end_of_code 「 」初學者通常犯的錯誤是將File.open放在begin塊中,在 這種情況下,這是不正確的,因爲open本身可能會引發異常,如果發生了 ,您不會想運行在確保塊中的代碼,因爲不會有文件 關閉。「 – Nosh