ホームページ  >  記事  >  ウェブフロントエンド  >  HTTP ステータス コードに基づいてフェッチ エラーを適切に処理するにはどうすればよいでしょうか?

HTTP ステータス コードに基づいてフェッチ エラーを適切に処理するにはどうすればよいでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-10 02:13:02559ブラウズ

How Can You Gracefully Handle Fetch Errors Based on HTTP Status Codes?

応答ステータスによるフェッチ エラーのキャプチャ

Redux および redux-promise-middleware ライブラリで fetch() API を利用しています。コード スニペット内で、応答ステータスをチェックし、エラーを処理しようとしています。ただし、Promise が拒否されないという問題が発生しています。

Fetch Promise の拒否について

Fetch Promise は、次の理由によってのみ拒否されるという点で独特です。ネットワークエラー。 4xx (クライアント エラー) や 5xx (サーバー エラー) などのステータス コードを持つ応答は、ネットワーク以外のエラーとみなされます。したがって、拒否はトリガーされません。

問題の解決

この制限を克服してステータス関連のエラーを処理するには、手動でエラーをスローする必要があります。

fetch(url)
  .then((response) => {
    if (response.ok) {
      return response.json();
    }
    throw new Error('Something went wrong');
  })
  .then((responseJson) => {
    // Handle the data
  })
  .catch((error) => {
    // Handle the error
  });

このコード スニペットは、応答ステータス (response.ok) を検証します。 OK でない場合は、Promise#catch() ハンドラーをトリガーするエラーがスローされます。これにより、HTTP ステータス コードに基づいてエラーを適切に処理できます。

以上がHTTP ステータス コードに基づいてフェッチ エラーを適切に処理するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。