ホームページ > バックエンド開発 > Python チュートリアル > Python のリクエスト モジュールを使用する場合、考えられるすべての例外をどのように処理できますか?

Python のリクエスト モジュールを使用する場合、考えられるすべての例外をどのように処理できますか?

DDD
リリース: 2024-11-15 06:08:02
オリジナル
228 人が閲覧しました

How Can You Handle All Possible Exceptions When Using Python's Requests Module?

Python の Requests モジュールによる例外の処理

HTTP リクエストを行うときに例外をキャッチすることは、堅牢なエラー処理にとって重要です。提供されたコード スニペットは一部の接続関連エラーを処理できますが、他の潜在的な問題は見逃しています。

リクエストのドキュメントによると、次の場合にさまざまな例外タイプが発生します。

  • 接続エラー ( DNS エラーや拒否された接続を含む): ConnectionError
  • 無効な HTTP 応答: HTTPError
  • タイムアウト: タイムアウト
  • 過剰なリダイレクト: TooManyRedirects

これらの例外はすべて、requests.Exceptions.RequestException から継承されます。

すべてのベースをカバーするには、

  1. 基本クラスの例外をキャッチする:
try:
    r = requests.get(url, params={'s': thing})
except requests.exceptions.RequestException as e:  # Handle all cases
    raise SystemExit(e)
ログイン後にコピー
  1. 例外を個別にキャッチする:
try:
    r = requests.get(url, params={'s': thing})
except requests.exceptions.Timeout:
    # Implement a retry strategy
except requests.exceptions.TooManyRedirects:
    # Notify user of incorrect URL
except requests.exceptions.RequestException as e:
    # Catastrophic error, terminate
    raise SystemExit(e)
ログイン後にコピー

HTTP エラーの処理:

HTTP ステータス コード (例: 401 Unauthorized) の例外を発生させる必要がある場合は、Response を呼び出します。リクエストを行った後、.raise_for_status

try:
    r = requests.get('http://www.google.com/nothere')
    r.raise_for_status()
except requests.exceptions.HTTPError as err:
    raise SystemExit(err)
ログイン後にコピー

考えられるすべての例外タイプを考慮し、エラー処理戦略を調整することで、アプリケーションがネットワークの問題を適切に処理し、ユーザーに適切な応答を提供できるようになります。

以上がPython のリクエスト モジュールを使用する場合、考えられるすべての例外をどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート