爲什麼ByteArrayOutputStream
。 close
與throws IOException
一起聲明? 首先,事實上它不能扔任何東西,因爲它的身體是空的。其次,它在法律上不能拋出任何東西,因爲它的文檔說「關閉一個ByteArrayOutputStream不起作用」。爲什麼ByteArrayOutputStream.close()拋出IOException?
這不是(非重要,但仍然)有點小錯誤嗎?
是的,我知道它的超類OutputStream
執行Closable
,close
方法允許投擲IOException
。但是沒有人禁止用close
方法覆蓋它(在ByteArrayOutputStream
中),並且沒有throw規範。 (即使覆蓋更拋出法用投擲少法在一些古老的版本的Java禁止,改變ByteArrayOutputStream
。close
定義現在不會是不兼容的變化。)
如果定義改變它趕上IOException異常將得到編譯錯誤,現有代碼'無法到達catch塊爲IOException。這個異常永遠不會從try語句體中拋出。 – saka1029
@ saka1029:我想,你走在正確的軌道上。 – Holger
@ saka1029,你是對的(我認爲這會導致警告,而不是錯誤)。 – Sasha