網路錯誤處理(Network Error Handling) 是指當應用程式在進行網路請求時,如果發生問題(例如無法連接到伺服器、超時、或伺服器返回錯誤狀態),如何應對這些情況並給予用戶適當的反饋。
檢查網路連接
在發送請求前,先檢查設備是否有網路連接。如果沒有網路連接,可以提前提示用戶檢查網路設定。
超時處理
設定一個請求超時的時間。如果伺服器在指定時間內沒有回應,則可以提示用戶請求超時,請稍後重試。
狀態碼處理
伺服器通常會返回一個狀態碼來表示請求的結果。如果狀態碼表示錯誤,應該給用戶顯示相應的錯誤訊息。
常見的狀態碼:
200 OK: 請求成功,伺服器已返回 request 的資料。
201 Created: 請求成功,伺服器已創建新的資源(通常用於 POST 請求)。
301 Moved Permanently: 請求的資源已被永久移動到新位置。
302 Found: 請求的資源臨時移動到新位置。
400 Bad Request: 客戶端發送了無效的請求(如格式錯誤)。
401 Unauthorized: 未經授權,請求需要驗證用戶身份。
403 Forbidden: 伺服器拒絕執行請求,即使已驗證身份。
404 Not Found: 請求的資源不存在。
500 Internal Server Error: 伺服器內部發生錯誤,無法完成請求。
502 Bad Gateway: 伺服器作為網關或代理,收到無效響應。
503 Service Unavailable: 伺服器暫時無法處理請求(例如過載或維護中)。
例外處理
使用 try-catch 結構來 catch 和處理網路請求中可能發生的例外(例如,無法連接伺服器),並給予用戶提示。
try {
// 發送 HTTP 請求
var response = await http.get(Uri.parse('https://example.com/api'));
// 檢查狀態碼,判斷請求是否成功
if (response.statusCode == 200) {
print('請求成功: ${response.body}');
} else {
print('請求失敗,狀態碼: ${response.statusCode}');
}
} catch (e) {
// 若網路錯誤,如連接失敗
print('網路錯誤: $e');
}