2

我知道在引入InterruptedIOException时没有太多选择。它必须是IOException的子类。

如果您想知道线程是否被中断,那么InterruptedIOException的唯一存在无疑会让生活变得有点复杂。这是因为如果要维护线程被中断的信息,则必须将InterruptedIOExceptionIOException区别对待。

虽然InterruptedIOException是为java.nio发明的,但据报道,至少在 Solaris 下,有java.io方法会抛出InterruptedIOException。此外,对于新的 Android 版本,库会面临从java.io迁移到java.nio或其他方法以某种方式映射的风险。

我倾向于认为应该考虑到InterruptedIOException是安全的。你怎么看?洞察力、经验、策略?

4

1 回答 1

1

如果可以避免,我个人不会使用中断。对于阻塞 IO 操作,我会设置一个 volatile 标志并关闭流。如果已设置关闭标志,我将忽略任何抛出的 IOException。这使您可以更好地控制组件的关闭方式。一旦我设置了一个组件,closed我当然不会取消设置,我可以随时检查它。

于 2013-01-15T13:56:43.047 回答