2013-01-15 50 views
2

據我所知,當InterruptedIOException被引入時,沒有多少選擇;它必須是IOException的子類Android或java.io方法拋出InterruptedIOException嗎?

InterruptedIOException的唯一存在如果您想知道線程是否被中斷,毫無疑問會使生活變得有點複雜。這是因爲你必須對待InterruptedIOException不同,IOException如果要維護線程被中斷的信息。

雖然InterruptedIOException的發明爲的java.nio,有報道稱,至少在Solaris下,有java.io方法,其拋出InterruptedIOException。此外,使用新的Android版本,有一種風險是庫從java.io遷移到java.nio或其他方法得到某種映射。

我傾向於認爲應該考慮InterruptedIOException以確保安全。你如何看待它?洞察力,經驗,策略?

回答

1

我個人不會使用中斷,如果你可以避免它。爲了阻止IO操作,我會設置一個易失性標誌並關閉流。如果已關閉標誌已設置,則忽略拋出的任何IOException。這使您可以更好地控制組件關閉的方式。一旦我將組件設置爲closed,我當然不會解除任何限制,我可以按照自己的喜好經常檢查它。

+0

謝謝你的分享。但是,在某些情況下,使用'closed'信息結束一個線程似乎不可能以直接的方式進行。例如。如果你有一個旨在保持連接打開的線程(如果它必須關閉,則重新打開它)。 –

+0

如果在嘗試重新連接之前應該檢查'closed'標誌。如果組件不這樣做,它應該支持關閉/停止/關閉方法 –

+0

爲真。謝謝!我現在既沒有使用中斷也沒有完全關閉,但你對中斷的評估使我朝着正確的方向前進。 –

相關問題