2010-09-22 8 views
5

Estoy haciendo un programa para AIX 5.3 en Python 2.6.1 que interactúa con un servidor IMAP. Recibo una excepción que no sé cómo atrapar; no parece tener un nombre que pueda usar con "excepto". El error parece ser algún tipo de tiempo de espera en la conexión al servidor.Python: ¿Cómo atrapar este tipo de excepción?

La última parte del seguimiento de la pila se ve así:

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 

Sólo quiero atrapar a este error específico, de modo que pueda volver a conectarse al servidor IMAP cuando sucede. ¿Cuál es la sintaxis para detectar este tipo de excepción?

Respuesta

9

La excepción es imaplib.IMAP4.abort (Python doc) para la captura de eso debería funcionar

+0

Oh, lo entiendo ahora. Pensé que self.abort() era una función (que me confundió, ¿cómo se puede usar una función como excepción?), Pero ahora me doy cuenta de que es una excepción. ¡Gracias! – Enfors

3

se puede tratar de atraparlo y averiguar el tipo:

import sys, rastreo, 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 sabe cómo manejar las excepciones, su problema era saber cómo atrapar self.abort, y mantener su respuesta formateada, pegando el código necesita formatear con código TAGs 'code' – shahjapan

+1

He reparado su publicación. es 'excepto:', no 'Excepción'. Aparte de eso, el código es como lo escribiste y acabo de arreglar el formateo. Si haces clic en 'editar', entonces podrás ver cómo funciona. Simplemente inicie todo lo que desee formateado cuatro espacios a la derecha. – aaronasterling

+0

gracias por el consejo de formato :) –

Cuestiones relacionadas