インタラクティブプロンプト(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プロンプトでの最後の例外オブジェクト。