Message362481
| Author |
serhiy.storchaka |
| Recipients |
benjamin.peterson, ethan.furman, ncoghlan, rhettinger, serhiy.storchaka |
| Date |
2020年02月22日.22:00:45 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1582408845.93.0.358772318687.issue39725@roundup.psfhosted.org> |
| In-reply-to |
| Content |
Interesting problem.
Example which does not depend on os.environ:
import traceback
try:
try:
raise TypeError
except:
try:
raise ValueError
except:
raise KeyError from None
except BaseException as exc:
e = exc
print([e, e.__cause__, e.__context__, e.__suppress_context__])
traceback.print_exception(type(e), e, e.__traceback__)
"from None" sets __suppress_context__ to True. Currently, if __suppress_context__ is true, the output of __context__ will be suppressed in the traceback. But what if we suppress only a part __context__ and output the "original" exception. The problem is what is the "original" exception. Is it __context__.__context__? Or __context__.__cause__ if it is not None? Should we take __context__.__suppress_context__ into account? Maybe go down recursively? |
|