[英]What is the right thing to do if a socketChannel.close() got IOException?
我有一個包裝socketChannel的類,並具有如下的close()方法:
public void close() {
// ... logic ...
try {
socketChannel.close();
} catch (IOException e) {
// ???
}
this.isConnected = false;
}
我希望在此操作結束時,將關閉socketChannel而不將其注冊到其選擇器。 我閱讀並發現上面的代碼足以滿足要求,但是如果得到IOException,會發生什么?
我的感覺是“吞咽”就足夠了,但是我錯過了什么嗎?
答案將取決於結案引發異常是否重要。 而且,如果這很重要,那么下一個問題是您是否需要對它做些其他事情……而不是對其進行報告。
Web服務器在關閉發送響應的輸出流時會遇到異常。 一個典型的原因是用戶在錯誤的時間關閉了Web瀏覽器或失去了網絡連接。 服務器端異常無關緊要(對服務器/服務器管理員而言),甚至不值得記錄。
您正在做的事情涉及與多台服務器進行通信,因此重要的是要知道它們都“獲得了信息”。 如果在結束時發生異常,則可能表示未發生異常。 可能您需要登錄。 也許您需要告訴服務器。 也許您需要使一些封閉的事務回滾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.