Python: Как отловить такого рода исключения? - PullRequest
5 голосов
/ 22 сентября 2010

Я делаю программу для AIX 5.3 в Python 2.6.1, которая взаимодействует с сервером IMAP. Я получаю исключение, которое не знаю, как его поймать - похоже, у него нет имени, которое я могу использовать с «кроме». Похоже, ошибка связана с тайм-аутом при подключении к серверу.

Последняя часть трассировки стека выглядит следующим образом:

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

Я только хочу перехватить эту конкретную ошибку, чтобы я мог подключиться к серверу IMAP, когда это произойдет. Каков синтаксис для отлова такого рода исключения?

Ответы [ 2 ]

10 голосов
/ 22 сентября 2010

Исключением является imaplib.IMAP4.abort ( Python doc ), поэтому ловит, что должно сработать

3 голосов
/ 22 сентября 2010

вы можете попытаться поймать его и узнать тип:

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"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...