Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: How to catch this kind of exception?

I'm making a program for AIX 5.3 in Python 2.6.1 that interfaces with an IMAP server. I'm getting an exception which I don't know how to catch - it doesn't seem to have a name that I can use with "except". The error seems to be some kind of timeout in the connection to the server.

The last part of the stack trace looks like this:

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

I only want to catch this specific error, so that I can reconnect to the IMAP server when it happens. What's the syntax for catching this kind of exception?

like image 779
Enfors Avatar asked Sep 22 '10 08:09

Enfors


2 Answers

The exception is imaplib.IMAP4.abort (Python doc) so catching that should work

like image 127
mmmmmm Avatar answered Sep 18 '22 04:09

mmmmmm


you can try to catch it and find out the type:

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"))
like image 38
Daniel Lenkes Avatar answered Sep 20 '22 04:09

Daniel Lenkes