導航:首頁 > 異常信息 > java如何判定網路異常

java如何判定網路異常

發布時間:2023-07-15 03:27:02

Ⅰ Java 網路通信異常求解

這個你這種方式是不能直接readObject的。除了伺服器那邊通過writeObject寫對象,客戶端這邊通過socket.getInputStream來readObject,這種要對象是序列化的,不過一般不用這種方式。
另一種是像你這種,服務端那邊直接寫位元組,客戶端讀取位元組,然後解析,再給對象屬性賦值,這種我們用的xsocket的框架,支持非同步的,你可以到網上看下。

Ⅱ java操作資料庫偶爾出現網路通信異常的原因

網路通信時連接中斷。根據查詢相關公開信息顯示,出現網路通信時連接中斷情況,導致java操作資料庫偶爾出現網轎螞絡通信異常,可以重新連接網路後重試。Java是一門面向對象仿宴的編程閉大埋語言,不僅吸收了C加加語言的各種優點,還摒棄了C加加里難以理解的多繼承、指針等概念。

Ⅲ 在一個java類中如何來捕獲網路異常

try{ ServerSocket server=new ServerSocket(8888); server.setSoTimeout(100); }catch (SocketException e) { e.printStackTrace(); }catch(IOException e1){ e1.printStackTrace(); }

Ⅳ Retrofit2.0+RxJava網路請求異常統一處理

本文內容是基於RxJava 2.0及Retrofit 2.1分析的。參考了 Rxjava +Retrofit 你需要掌握的幾個技巧,Retrofit緩存,統一對有無網路處理, 異常處理,返回結果問題
下面列出具體添加的依賴。

以下這些錯誤,都是在網路請求中經常見的。我們可以通過Toast彈出消息通知用戶具體的異常以及載入對應的UI界面。除此之外,通過具體的異常信息,方便我們及時的排查項目中的BUG。

那麼問題就來了,我們如何判斷異常的類型?

這就要從伺服器返回的數據格式說起了。

我們一般請求的返回都是像下面這樣

伺服器端返回數據約定俗稱就是大概以上的格式。可能具體的code碼表示的含義不一樣,這個可以與伺服器端人員交流,靈活變化。
關於Retrofit的基本配置就不再講述了,這里具體講解如何對伺服器返回數據封裝以及使用RxJava對錯誤信息處理。

封裝返回數據
對於上述的伺服器返回數據我們要對code做出一些判斷,code不為200(假設200表示請求網路成功)就拋出異常。所以我們新建一個BaseResponse類,對應上面的數據結構。

這算是所有實體的一個基類,data可以為任何數據類型。

然後要對返回結果進行預處理,新建一個ExceptionHandle。預處理無非就是當根據返回數據BaseResponse的isOk()方法判斷為是否為true,若為true則正常處理,否則拋出異常讓ExceptionHandle進一步處理,判斷異常為何種異常。我們先跳過前面的邏輯,先了解如何判斷是何種異常?

判斷異常類型

詳細可看源碼,下面會貼出地址。
通過ExceptionHandle.handleException(Throwable e) 即可返回一個異常,並攜帶具體異常類型信息。

現在我們已經知道了如何判斷是否產生以上以及如何判斷異常類型。接下來需要解決地就是如何把異常傳遞給Observer的onError(Throwable e)去處理異常。

在進行異常傳遞的過程中,第一步我們先要判斷伺服器返回的數據是否是異常,如果不是異常則返回data數據,如果是異常則拋出異常。這個時候就包含了一個數據轉換的過程即把BaseResponse對象轉換成data類型的對象,所以需要map()操作符。

其中HandleFuc實現了 Function<BaseResponse<T>, T> 介面

如果不出現異常則不會走第二步。如果出現異常,則需要進行第二步,即對異常進行判斷,然後將ExceptionHandle.handleException(Throwable e) 返回的異常傳入onError()中處理。

重點來了:當產生異常時,應該終止對onNext()方法的調用並調用onError()方法。如果不繼續處理,僅通過以上步驟,雖然會調用onError()方法,但是沒有對異常進行判斷,並且沒有取消onNext()方法。那麼有沒有一個好的方法,可以即取消onNext()方法,又能在其中實現異常判斷的執行,並且會調用onError()方法?

如此強大的RxJava自然有這樣的方法了, onErrorResumeNext() 就能實現這個要求。對於 onErrorResumeNext() ,可以簡單理解為:當發生錯誤的時候,由另外一個Observable來代替當前的Observable並繼續發射數據。

onErrorResumeNext() 中傳入的參數可以是一個Function介面。這樣,我們可以在Function中生成一個Observable,該Observable執行異常判斷的邏輯,並調用onError()方法。
具體實現如下:

至此,我們便實現了異常判斷與傳遞的邏輯。這樣我們就可以在onError()方法中提取具體的異常狀態信息,進行相應的處理。

大概流程是:map()進行數據類型轉換,並檢測異常。如果正常,返回data類型的數據。如果不正常,onErrorResumeNext()判斷異常類型並傳遞異常

上述情況關閉了網路。當發起網路請求,沒有網路則拋出異常,然後檢測出具體異常,Toast提示異常類型,用戶便知道是什麼地方出錯了。

demo參考地址: https://github.com/maioo/RetrofitRxJavaException

閱讀全文

與java如何判定網路異常相關的資料

熱點內容
網路共享中心沒有網卡 瀏覽:490
電腦無法檢測到網路代理 瀏覽:1348
筆記本電腦一天會用多少流量 瀏覽:473
蘋果電腦整機轉移新機 瀏覽:1347
突然無法連接工作網路 瀏覽:959
聯通網路怎麼設置才好 瀏覽:1188
小區網路電腦怎麼連接路由器 瀏覽:929
p1108列印機網路共享 瀏覽:1184
怎麼調節台式電腦護眼 瀏覽:601
深圳天虹蘋果電腦 瀏覽:839
網路總是異常斷開 瀏覽:582
中級配置台式電腦 瀏覽:893
中國網路安全的戰士 瀏覽:601
同志網站在哪裡 瀏覽:1378
版觀看完整完結免費手機在線 瀏覽:1430
怎樣切換默認數據網路設置 瀏覽:1077
肯德基無線網無法訪問網路 瀏覽:1252
光纖貓怎麼連接不上網路 瀏覽:1374
神武3手游網路連接 瀏覽:936
局網列印機網路共享 瀏覽:973