获取最后抛出的异常的引用

wim*_*wim 5 python callstack exception-handling exception stack-trace

在python和/或ipython交互式解释器中,如何在最后一个未处理的异常上绑定名称?即相当于

>>> try:
...     1/0
... except Exception as potato:
...     pass
... 
>>> format(potato)
'integer division or modulo by zero'
Run Code Online (Sandbox Code Playgroud)

必须像......

>>> 1/0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>> import sys
>>> potato = ???
Run Code Online (Sandbox Code Playgroud)

mgi*_*son 5

你可以使用sys.last_value这个:

>>> 1/0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
>>> sys.last_value
ZeroDivisionError('integer division or modulo by zero',)
>>> type(sys.last_value)
<type 'exceptions.ZeroDivisionError'>
Run Code Online (Sandbox Code Playgroud)