在交互式提示符 (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 提示符处的最后一个异常对象。