被捕异常是无

Ets*_*tse 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)
Run Code Online (Sandbox Code Playgroud)

输出是:

None
None
None
None
Run Code Online (Sandbox Code Playgroud)

我从来没有经历过异常None,并想知道是什么导致这种情况.

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

Dan*_*iel 19

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

try:
    dict()[None]
except Exception as e:
    print(type(e), e)
Run Code Online (Sandbox Code Playgroud)

输出:

<class 'KeyError'> None
Run Code Online (Sandbox Code Playgroud)

  • @Etse:这就是为什么你永远不应该捕获一个未知的异常.如果您期望KeyError,则只处理KeyError.否则,让异常落空. (4认同)

Jon*_*nts 5

你最好打印repr例外,而不是默认的str那个print应用,例如:

from __future__ import print_function

try:
    run_arbitrary_code()
except Exception as e:
    print(repr(e))
Run Code Online (Sandbox Code Playgroud)