Python:如何捕获这种异常?

5 投票
2 回答
1498 浏览
提问于 2025-04-16 04:27

我正在为AIX 5.3开发一个Python 2.6.1的程序,这个程序需要和IMAP服务器进行交互。现在我遇到了一个异常,但我不知道该怎么处理,因为这个异常似乎没有一个可以用“except”来捕获的名字。这个错误看起来像是连接服务器时出现了超时。

堆栈跟踪的最后一部分是这样的:

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 个回答

3

你可以尝试捕捉这个错误,然后找出它的类型:

导入一些模块,比如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"))
10

这个异常是 imaplib.IMAP4.abort(Python 文档),所以捕捉这个异常应该是有效的。

撰写回答