0

誰かが前にこれを尋ねました、しかし答えはprintどちらが良くないかを示唆しています。

Python:何も返されない場合のJSONデコードエラーの処理

これを考えると:

class BitbucketError(Exception):
    pass

try:
    response = requests.get('https://bitbucket.org/.......')
    return response.json()['data']

# because JSONDecoderError inherits from ValueError
except (json.JSONDecoderError, ValueError) as e: 
    raise BitbucketError(response.status_code)

大丈夫。しかし、このモジュールを別のプロジェクトで使用する場合は、

# save to dabase, example 1
raw_code = mymodule.bitbucket.file(...)
db.save(raw_code)

# return json back to user (api server, example 2)
raw_code = mymodule.bitbucket.file(...)
return {'data': raw_code}

上記のスニペットで例外をキャッチしたいと思います。しかし、問題は、元の例外を自分で伝播または定義させるだけでよいのかということです。

エラーは404、405、さらには500が原因である可能性があるため、エラーを適切に処理する方法を確認しようとしています。

この質問が理にかなっていることを願っています。

4

1 に答える 1

1

これは、コードの 2 番目の部分のコンテキストに大きく依存します。たとえば、アプリケーションの内部自動化のためですか? その場合、例外をキャッチし、Djangos のエラー メールに似たメール (完全なスタック トレース、変数などを含む) を、それを処理できる組織内の誰かに送信することをお勧めします。エンド ユーザー アプリケーションの場合は、おそらくエラーをログに記録し (たとえば、メールに)、ユーザーに何らかのフィードバックを提供する必要があります。この場合、さまざまなエラー コードを異なる方法で処理する必要があります。

于 2013-03-10T09:28:23.697 に答える