被捕异常是无

时间:2014-08-18 20:45:16

标签: python python-2.7

我有一个用python2.7编写的脚本,其中我出于调试目的,使用catch-all语句来捕获和打印所有异常。出于某种原因,捕获的异常有时是None。什么可能导致这种情况发生?

代码是这样的:

from __future__ import print_function

try:
    run_arbitrary_code()
except Exception as e:
    print(e)

然后输出:

None
None
None
None

我从来没有遇到None的异常,并想知道是什么导致这种情况。

为了回答一些评论,该功能做了很多。它包括图形搜索以及通过套接字发送和接收JSON数据等内容,因此有很多事情可能出错。但是这里的问题是引发的异常是None,它根本无法帮我调试。

2 个答案:

答案 0 :(得分:18)

查看异常的类型,我敢打赌它是一个KeyError:

try:
    dict()[None]
except Exception as e:
    print(type(e), e)

输出:

<class 'KeyError'> None

答案 1 :(得分:4)

最好打印异常的repr,而不是str适用的默认print,例如:

from __future__ import print_function

try:
    run_arbitrary_code()
except Exception as e:
    print(repr(e))