2010-09-22 13 views
5

Sto creando un programma per AIX 5.3 in Python 2.6.1 che si interfaccia con un server IMAP. Sto ricevendo un'eccezione che non so come catturare - non sembra avere un nome che posso usare con "tranne". L'errore sembra essere una sorta di timeout nella connessione al server.Python: come catturare questo tipo di eccezione?

L'ultima parte della traccia dello stack si presenta così:

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 

voglio solo prendere questo errore specifico, in modo che possa ristabilire la connessione al server IMAP quando succede. Qual è la sintassi per catturare questo tipo di eccezione?

risposta

9

L'eccezione è imaplib.IMAP4.abort (Python doc) in modo cattura che dovrebbe funzionare

+0

Oh, capisco ora. Ho pensato che self.abort() era una funzione (che mi ha confuso, come si può usare una funzione come eccezione?), Ma ora capisco che è un'eccezione! Grazie! – Enfors

3

si può provare a prenderlo e scoprire il tipo:

import sys, traceback, 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 sa come gestire le eccezioni, il suo problema era sapere come catturare self.abort, e mantenere la risposta formata, incollando il codice necessario formattare con codice 'TAG' code' – shahjapan

+1

Ho corretto il tuo post. è 'tranne:', non 'Eccezione'. A parte questo il codice è come l'hai scritto e ho appena corretto la formattazione. Se fai clic su "modifica", sarai in grado di vedere come funziona. Inizia tutto ciò che vuoi formattato di quattro spazi a destra. – aaronasterling

+0

grazie per il suggerimento di formattazione :) –

Problemi correlati