私はいくつかの ruby コードを begin-rescue ブロックでラップして使用していますが、どうにかしてまだクラッシュしています。
コードのブロックは次のようになります。
# Retrieve messages from server
def get_messages
@connection.select('INBOX')
@connection.uid_search(['ALL']).each do |uid|
msg = @connection.uid_fetch(uid,'RFC822').first.attr['RFC822']
begin
process_message(msg)
add_to_processed_folder(uid) if @processed_folder
rescue
handle_bogus_message(msg)
end
# Mark message as deleted
@connection.uid_store(uid, "+FLAGS", [:Seen, :Deleted])
end
end
このコードを考えると、process_messageまたはadd_to_processed_folderを実行できなかった場合、レスキューが開始され、handle_bogus_messageが呼び出されると想定します。そうは言っても、私はこのコードを本番環境で実行していますが、電子メール メッセージを「取得」すると (これは rake タスクから実行されます)、SyntaxErrorで終了することがあります。
エラー メッセージを確認するには、http://pastie.org/1028479を参照してください。参照しているprocess_messageは、上記のprocess_messageと同じでは ありません。開始-レスキューがこの例外をキャッチしない理由はありますか?