BufferedWriter.write does not throw exception if it is already closed.

Jing LV lvjing at linux.vnet.ibm.com
Fri Jan 28 14:50:51 UTC 2011


Thanks for reply Alan, sorry didn't see this mail before I raise an 
issue on https://bugs.openjdk.java.net/show_bug.cgi?id=100169 (my mail 
server seems some problem these days)

Consider it is using underlying writer, one thing I need to mention is 
that in the testcase I post in the first mail, it was trying to throw an 
exception[1] in its write method when it's closed already. I am ok with 
the documentation modification myself, however I wonder it may confuse 
customer if he found his own writer has no problem at all?

[1]
@Override
public void write(char[] buf, int offset, int count) throws
IOException {
	if (closed) {
		throw new IOException("Already closed");
	}
}



于 2011-1-28 18:55, Alan Bateman 写道:
> Jing LV wrote:
>> Hi Alan,
>>
>> (Sorry for late reply that it seems my mail-box has some trouble that 
>> I cannot send my mail yesterday). I agreed with you that the document 
>> may be changed. However as you see another problem is that the write 
>> method is unstable, it may or may not throw the exception, only 
>> depends on its buffer size, I think we'd better at least fix this 
>> unpredictable behaviour?
>>
> I think this is part of the same issue. BufferedWriter#close is 
> failing because the underlying Writer's close is failing. This leaves 
> the BufferedWriter "open" and the underlying Writer "closed". If you 
> continue writing then the BufferedWriter may continue to buffer 
> characters but if it has to flush to the underlying Writer then it 
> will fail. This is clearly undesirable and it may be best to clarify 
> the spec so that stream will be considered to be closed even if the 
> close fails (as the current behavior is long standing behavior we 
> would just need to think through any implications/side-effects). We 
> can easily the implementation too, and in addition the suppressed 
> exception support gives us the opportunity to fix a few other issues 
> in these classes. I'll create a bug for this today.
>
> -Alan.





More information about the core-libs-dev mailing list