【Python】response.raise_for_statusとは?使い方や指定オブションまでわかりやすく解説

PythonでAPIとやりとりする際に欠かせないのが requests ライブラリです。

その中でも Response.raise_for_status() は「リクエストが失敗したかどうかを確認する」ための重要なメソッドです。

この記事では Response.raise_for_status() の基本的な使い方から、活用方法、注意点までをわかりやすく丁寧に解説します。

Response.raise_for_status() とは?

Response.raise_for_status() は、HTTPリクエストの結果がエラー(ステータスコードが 4xx や 5xx)だった場合に「例外(エラー)」を発生させるメソッドです。

通常、リクエストを送っただけでは、たとえ失敗していてもPython側は何もエラーを出しません。

しかし、Response.raise_for_status() を使えば、失敗に気づいて適切な処理ができるようになります。

使い方

基本的な使い方

まずは Response.raise_for_status() の基本的な使い方を見てみましょう。

このコードでは:

  • 存在しないページ(ステータス404)にアクセスし、
  • Response.raise_for_status() を呼び出すことでエラーを検出しています

この場合、requests.exceptions.HTTPError というエラーが発生し、スクリプトの実行が止まります。

具体例:エラーをtry〜exceptで処理する

実際の開発では、エラーが起きてもスクリプトを止めずに処理を続けたいことがあります。

そんなときは tryexcept を使って、エラーをキャッチしましょう。

このように書くことで:

  • サーバーから500エラーが返ってきても、
  • プログラムを止めずに「エラー処理」を行うことができます

具体例:成功時には何も起きない

成功(ステータス200など)のときは、Response.raise_for_status() は何もしません。

このコードではエラーは出ず、「成功しました」と表示されます。

つまり、Response.raise_for_status() は「失敗したときだけ動作する安全装置」と考えるとよいでしょう。

.raise_for_status() を使う理由

HTTPリクエストは、たとえ失敗(404や500など)しても、Pythonのコード上では「普通に成功した」かのように扱われてしまいます。

上記コードでは、エラーなのに例外は出ず、処理はそのまま続いてしまいます。

これでは問題に気づきにくく、バグの原因になりかねません。

Response.raise_for_status() を使えば、こうしたエラーにすぐ気づいて対処できます。

使う場面として多いのは下記です。

  • APIにアクセスしてデータを取得するとき
  • フォームの送信結果を確認したいとき
  • 外部サービスとの通信が成功したかチェックしたいとき

使えるオプションや注意点

Response.raise_for_status() 自体には引数はありません。

ですが、次の点に注意して使うとより安全です。

  • 通信そのものが失敗(タイムアウトなど)した場合は .raise_for_status() は呼ばれる前に例外が出る
  • そのため、.raise_for_status() を使う前に、通信エラーも考慮して tryexcept を広めに使うと安心
このようにすれば、タイムアウトや接続エラー、HTTPエラーすべてを一括で処理できます。

まとめ

今回は Response.raise_for_status() の使い方を詳しく紹介しました。

Response.raise_for_status()はHTTPエラーを検出するための安全装置

  • ステータスコードが 4xx や 5xx のときに例外が出る
  • 通信が成功していれば何も起きず、そのまま続行できる
  • エラー処理を tryexcept で囲んで使うのが基本
  • 通信エラーにも備えるなら requests.exceptions.RequestException を使うと安心

APIや外部サービスと連携するコードでは、 Response.raise_for_status()) を使って、エラーを検知できるようにしておきましょう!

おすすめの記事