Java:写入ByteArrayOutputStream时的IOException?

Ton*_*ony 10 java exception outputstream ioexception bytearrayoutputstream

由于ByteArrayOutputStream只是写入内存,IOException因此永远不会发生.但是,由于OutputStream接口的约定,所有流操作都IOException在其throws子句中定义.

"处理"这种从未发生过的正确方法是什么IOException?只需将操作包装在空try-catch块中?

或者是否存在ByteArrayOutputStream可能抛出异常的实际情况?

(另请参阅:如何以安全可读的方式处理我知道永远不会抛出的IOException?)

编辑

正如Jon指出的那样,ByteArrayOutputStream并没有声明它定义throwswrite方法的子句- 但是,它继承write(byte[])OutputStream,并且确实抛出IOEXception(非常奇怪,BAOS不会覆盖此方法,因为它可以替换超类版本 -一次写一个字节 - arraycopy调用效率更高

Jon*_*eet 10

好吧,ByteArrayOutputStream 并没有声明它的任何方法抛出IOException除了writeToclose.(close老实说,我不知道为什么还要宣布它.)

如果你有一个类型的引用,OutputStream当然你还是会看到抛出声明的声明.

我不会使用一个空的catch块 - 我会抛出类似IllegalStateException或类似的未经检查的异常:它意味着你处于一种你真正没想到的情况,并且出现了严重错误.