Sto utilizzando un codice ruby racchiuso in un blocco begin-rescue ma in qualche modo riesce a bloccarsi.Begin Rescue not catching error
il blocco di codice simile a questo:
# 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
Dato questo codice Parto dal presupposto che se process_message o add_to_processed_folder Impossibile eseguire poi soccorso sarebbe calci dentro e chiamare handle_bogus_message. Detto questo, sto eseguendo questo codice in un ambiente di produzione e talvolta quando "ottengo" un messaggio di posta elettronica (che viene eseguito da un'attività di rake), viene interrotto con un errore di sintassi .
Per uno sguardo al messaggio di errore check out http://pastie.org/1028479 e non che process_message che si riferisce è la stessa process_message sopra. C'è qualche motivo per cui iniziare - rescue non catturerà questa eccezione?
Il motivo 'rescue' non salva' L'eccezione di default è che di solito sono considerate troppo severe per il salvataggio. –