Begin Rescue fängt Fehler nicht ab
Ich verwende einen Ruby-Code, der in einen Start-Rettungs-Block eingebettet ist, aber irgendwie kann er trotzdem abstürzen.
Der Codeblock sieht folgendermaßen aus:
# 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
Diesen Code gegeben würde ich davon ausgehen, dass, wenn process_message oder add_to_processed_folder konnte nicht ausgeführt werden, dann würde die Rettung eintreten und @ aufruf handle_bogus_message. Davon abgesehen führe ich diesen Code in einer Produktionsumgebung aus und manchmal, wenn ich eine E-Mail-Nachricht "erhalte" (diese wird von einer Rechenaufgabe ausgeführt), stirbt sie mit einemSyntax-Fehle.
Für einen Blick auf die Fehlermeldung check outhttp: //pastie.org/102847 und nicht das process_message, auf das es sich bezieht, ist das gleiche process_message über. Gibt es einen Grund, warumStar - Rettun fängt diese Ausnahme nicht ab?