2
|
Steffen Heil · 技术社区 · 15 年前 |
![]() |
1
2
很有趣,但今天有人已经发布了一个链接 Fallacies of Distributed Computing .
就你而言,正如一位优秀的德英翻译告诉我的那样
当您处理I/O,特别是套接字I/O时,必须准备好任何IOException都会向您抛出。
其中一些,比如
在任何情况下,一旦你得到IOException,你可能就不能做太多的事情来与那个频道通信。因此,您可以关闭连接,稍后重试。
顺便说一句,
编辑以回复操作注释
不,这是您正在使用的特定频道的属性。如果它实现
如果你看一下
例如,如果我在我的异域通道中实现read方法,我可以选择完全忽略规范,而不在声明中抛出任何异常。不过,当遇到意外行为时,类的用户可能会付出沉重的代价,并且可能会放弃我的实现,转而选择更健壮的实现。
在任何情况下,我认为您对read方法中声明的不同异常应该如何反应感到困惑。
首先,不是所有读方法规范中的异常都可能被抛出。案例分析
记住,框架应该正常工作,或者在抛出任何类型的异常时正常关闭。例如,您的代码或库代码在任何时候都可以引发未检查(运行时)异常。只有对环境的测试和更深入的了解才能告诉您哪些异常是真正致命的,哪些是可以安全处理的。 因为框架是由人编写的,它们也有缺陷、缺陷等,所以在抛出IOException时可能会出现这种情况,但底层通道仍然正常。不幸的是,只有在真实的生产环境中,血液和内脏才能发现这些情况。下面是一个例子,其中一个套接字引发的IOException可以完全忽略: http://bugs.sun.com/view_bug.do?bug_id=4516760 . 所以,从为所有IOException编写通用处理程序开始,并将它们都视为致命的,对于您在生产中发现的特定条件,可以放宽它。 |
![]() |
2
0
根据文件 here :
这表明拥有
如果另一个线程正在关闭通道,我希望您看到
我不明白为什么你不能抓住
至于
|
|
user29759326 · 如何返回递归函数中的最后一个值? 4 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 4 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 4 月前 |
![]() |
rudraraj · java中未声明最终变量 5 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 5 月前 |