小编典典

在Python提示符下引发错误后,如何获取最后一个异常对象?

python

在交互式提示(REPL)上调试Python代码时,通常我会写一些引发异常的代码,但是我没有将其包装在try/中except,因此一旦引发错误,我就永远失去了异常对象。

通常,Python打印出的回溯和错误消息是不够的。例如,在获取URL时,服务器可能会返回40x错误,并且您需要通过error.read()…来响应内容,但是您再也没有错误对象了。例如:

>>> import urllib2
>>> f = urllib2.urlopen('http://example.com/api/?foo=bad-query-string')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  ...
urllib2.HTTPError: HTTP Error 400: Bad Request

德拉特,回应的主体怎么说?它可能包含有价值的错误信息…

我意识到通常可以很容易地重新运行包含在try /
except中的代码,但这并不理想。我还意识到,在这种特定情况下,如果我使用的是requests库(不会因HTTP错误而引发错误),我就不会遇到这个问题……但是我真的很想知道是否有更通用的方法来获取在这种情况下,Python提示符下的最后一个异常对象。


阅读 122

收藏
2020-12-20

共1个答案

小编典典

sys模块提供了一些功能事后检查的异常:sys.last_typesys.last_value,和sys.last_traceback

sys.last_value 是您要寻找的那个。

2020-12-20