捕獲帶有回應狀態的提取錯誤
您正在將fetch() API 與Redux 和redux-promise-middleware 庫結合使用。在您的程式碼片段中,您嘗試檢查回應狀態並處理任何錯誤。但是,您遇到了 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)。如果不正常,它會拋出一個錯誤,觸發 Promise#catch() 處理程序。這使您可以根據 HTTP 狀態代碼優雅地處理錯誤。
以上是如何優雅地處理基於 HTTP 狀態碼的取得錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!