begin
        ...
rescue  Errno::EPIPE => e
        ...
ensue
        temp.close(true)
end
とても初歩的なミスなのですが、ensure と書くべきところを ensue と間違って入力したために、必ず削除されるつもりの一時ファイルが残るというバグでした。このように間違えると、ensue は、rescue 節の一部と解釈されるので、rescue 節が走行する場合にしか、エラーにはなりません。
2011年2月28日月曜日
Rubyの例外処理の落とし穴
(わたしの中では)使用頻度が低い Ruby を使ってスクリプトを書いていて、例外処理で初歩的な間違いを起こしましたので、メモしておきます。
登録:
コメントの投稿 (Atom)

0 件のコメント:
コメントを投稿