2

Python2 で例外スタック トレースをダンプしようとすると、アクティブな例外がないことに気付きました。次のように出力されますNone

Python 2.7.2+ (default, Oct  4 2011, 20:06:09) 
>>> import traceback
>>> traceback.print_exc()
None

しかし、Python3 はいくつかの内部問題で失敗します:

Python 3.2.2 (default, Sep  5 2011, 21:17:14) 
>>> import traceback
>>> traceback.print_exc()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.2/traceback.py", line 259, in print_exc
    print_exception(etype, value, tb, limit, file, chain)
  File "/usr/lib/python3.2/traceback.py", line 155, in print_exception
    for value, tb in values:
  File "/usr/lib/python3.2/traceback.py", line 122, in _iter_chain
    cause = exc.__cause__
AttributeError: 'NoneType' object has no attribute '__cause__'

これは Python のバグですか、または呼び出す前に常に何らかの条件をテストする必要がありますか?print_exc()

4

1 に答える 1

3

それはバグです。エラーを発生させるべきだと判断されるかもしれませんが、それは間違いなく間違ったエラーです。

于 2012-02-23T06:26:32.250 に答える