J'utilise du code ruby enveloppé dans un bloc de début - sauvetage mais de toute façon il parvient toujours à se bloquer.Début Rescue ne pas attraper l'erreur
le bloc de code ressemble à ceci:
# 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
Compte tenu de ce code, je suppose que si process_message ou add_to_processed_folder n'a pas pu exécuter alors le sauvetage et se lancer appeler handle_bogus_message. Cela étant dit, je cours ce code dans un environnement de production et parfois quand je "reçois" un message électronique (ceci est exécuté à partir d'une tâche rake), il meurt avec un SyntaxError.
Pour un coup d'oeil à l'erreur un message consulter http://pastie.org/1028479 et non que process_message qu'il fait référence est le même process_message ci-dessus. Y at-il une raison pour laquelle commencer - sauvetage ne sera pas attraper cette exception?
La raison pour laquelle 'rescue' ne sauve pas' Exception's par défaut est qu'ils sont généralement considérés comme trop sévères pour être sauvés. –