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()