標籤:
在進行網路資料交換的時候總是遇到各種各樣的錯誤。
這些網路錯誤是來自client還是server。
我們來梳理一下:
我們將錯誤分為三個大類
- 作業系統錯誤
- http請求錯誤
- 應用錯誤
1.作業系統錯誤是因為資料包沒有到達預定目標導致的,造成原因可能有:
- 沒有網路——沒有串連網路
- 無法路由到目標主機——主要是因為目標主機可能位於隔離網路或者處於離線狀態。導致的。
- 沒有應用監聽目標port——請求到達目標主機後資料包會發送到指定的port號。假設server沒有監聽這個port號或者是有太多的請求在排隊那麼串連請求就會被拒絕。
- 無法解析目標主機名稱——URL載入系統會返回錯誤。
通常這些錯誤由配置錯誤或是嘗試訪問沒有外部名字解析且處於隔離網路中的主機造成的。
在iOS的URL載入系統中,作業系統錯誤會以NSError對象的形式發送給應用。ios通過NSError在軟體中傳遞錯誤資訊。使用NSError的主要優勢在於NSError對象包括了錯誤域屬性;有非常多網路請求問題是由於網路沒有串連造成的,所以我們每次進行網路請求的時候都須要進行檢查。由於行動裝置會移動出網路。這裡我們通常採用Reachability。
http錯誤:http錯誤是因為http請求。httpserver或應用server的問題造成的。http錯誤通過http響應的狀態代碼發送給請求client。5類http錯誤
- 資訊性質的100層級——來自httpserver的資訊,請求的處理將會繼續,只是帶有警告。
- 成功的200層級——服務請接受了請求。
- 重新導向須要的300層級——資源已經移動了須要重新導向。
- client錯誤400層級——表示client發出了server無法正確處理錯誤的資料,比如不對的http頭導致這個範圍錯誤。
- 下遊錯誤500層級——表示httpserver與下遊應用server之間出現了錯誤。
應用錯誤這些錯誤是是由執行在服務層之上的商務邏輯和應用造成的。錯誤可能是代碼問題,比如異常,也可能是語義問題。比方向服務提供了無效帳號等。又比如銀行卡中有500元錢而你要提1000元現金,這就會錯誤發生。
來自ios網路進階編程。
iOS 網路錯誤-分類