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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage