我有一个包装socketChannel的类,并且有一个close()方法,如下所示:
public void close() {
// ... logic ...
try {
socketChannel.close();
} catch (IOException e) {
// ???
}
this.isConnected = false;
}
我希望在此操作结束时socketChannel将被关闭而不会注册到其选择器。我阅读并发现上面的代码就足够了,但如果我收到IOException会怎么样?
我的感觉是“吞咽”就足够了,但我错过了什么?
答案 0 :(得分:3)
答案将取决于收盘是否重要。如果重要的话,下一个问题是你是否需要对此做些什么......除了报告它。
关闭发送响应的输出流时,Web服务器会收到异常。典型的原因是用户在错误的时刻关闭了他的网络浏览器或丢失了他的网络连接。服务器端异常与服务器/服务器管理员无关,甚至不值得记录。
你正在做一些涉及与多个服务器交谈的事情,重要的是要知道他们都“得到了消息”。如果在收盘时发生异常,则可能表明未发生这种情况。可能你需要记录这个。也许你需要告诉服务器。也许你需要让一些封闭的事务回滚。