Estoy usando un código de rubí envuelto en un bloque de begin - rescue pero de alguna manera se bloquea.Begin Rescue no detecta error
el bloque de código es el siguiente:
# 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
Teniendo en cuenta este código que supongo que si process_message o add_to_processed_folder no pudo ejecutar a continuación de rescate se sacudía y llamar handle_bogus_message. Dicho esto, estoy ejecutando este código en un entorno de producción y, a veces, cuando obtengo un mensaje de correo electrónico (se ejecuta desde una tarea de rake), muere con SyntaxError.
Para un vistazo al mensaje de error echa un vistazo a http://pastie.org/1028479 y no la process_message que se refiere es el mismo process_message anteriormente. ¿Hay alguna razón por la cual comienza - rescatar no detectará esta excepción?
La razón por la que 'rescue' no rescata' Exception's por defecto es que generalmente se consideran demasiado severos para rescatarlos. –