2010-09-22 11 views
5

Ich mache ein Programm für AIX 5.3 in Python 2.6.1, das mit einem IMAP-Server verbunden ist. Ich bekomme eine Ausnahme, die ich nicht verstehen kann - es scheint keinen Namen zu haben, den ich mit "außer" verwenden kann. Der Fehler scheint eine Art Timeout in der Verbindung zum Server zu sein.Python: Wie fängt man diese Art von Ausnahme?

Der letzte Teil des Stack-Trace sieht wie folgt aus:

File "/home/chenf/python-2.6.1/lib/python2.6/imaplib.py", line 890, in _command_complete 
    raise self.abort('command: %s => %s' % (name, val)) 
abort: command: SEARCH => socket error: EOF 

Ich möchte nur diese spezifische Fehler fangen, so dass ich auf dem IMAP-Server verbinden kann, wenn es passiert. Wie lautet die Syntax für diese Art von Ausnahme?

Antwort

9

Die Ausnahme ist imaplib.IMAP4.abort (Python doc) so zu kontrollieren, dass sollte funktionieren

+0

Oh, ich verstehe jetzt. Ich dachte, self.abort() wäre eine Funktion (die mich verwirrte, wie kann man eine Funktion als Ausnahme benutzen?), Aber jetzt merke ich, dass es eine Ausnahme ist! Vielen Dank! – Enfors

3

können Sie versuchen, ihn zu fangen und die Art herausfinden:

import sys, Rückverfolgung, pprint

try: 
    do what you want to do 
except: 
    type, value, tb = sys.exc_info() 
    pprint.pprint(type) 
    print("\n" + ''.join(traceback.format_exception(type, value, tb)).strip("\n")) 
+0

-1, OP weiß, wie mit den Ausnahmen umzugehen ist, sein Problem war, wie man sich selbst versteht.abort, und halten Sie Ihre Antwort formatiert, Einfügen von Code Formatierung mit Code TAGs 'code' – shahjapan

+1

Ich habe Ihren Beitrag behoben. es ist 'except:', nicht 'Exception'. Ansonsten ist der Code so, wie du ihn geschrieben hast und ich habe gerade die Formatierung korrigiert. Wenn Sie auf "Bearbeiten" klicken, können Sie sehen, wie es funktioniert. Starten Sie einfach alles, was Sie formatieren wollen, vier Leerzeichen nach rechts. – aaronasterling

+0

danke für den Formatierungstipp :) –

Verwandte Themen