iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
Mobile Development

畢業專題拯救計畫系列 第 9

Flutter中的故障應對措施--Network Error Handling

  • 分享至 

  • xImage
  •  

網路錯誤處理(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');
}
  • 重試機制
    在某些情況下,你可能希望在請求失敗後自動重試幾次,尤其是當網路不穩定時。

上一篇
Flutter中的訂單系統--API基本概念
下一篇
Flutter中的日記本--Local Storage
系列文
畢業專題拯救計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言