Sorry I was obviously missing the part of this thread where it was decided to not actually fix this as requested in the bug due to compatibility issues.

I agree with Brian that something must be added to the class-level javadoc explaining that due to a historical oversight there is one method that declares it throws IOException (and can actually throw it?).

I don't see why that method couldn't still honour the checkError protocol as well though.

David

On 24/07/2019 11:31 am, David Holmes wrote:
Jumping in here as this change is starting to really confuse me ...

On 24/07/2019 2:41 am, Brian Burkhalter wrote:


On Jul 23, 2019, at 8:27 AM, Brian Burkhalter <brian.burkhal...@oracle.com> wrote:

On Jul 23, 2019, at 8:20 AM, Alan Bateman <alan.bate...@oracle.com <mailto:alan.bate...@oracle.com>> wrote:

On 23/07/2019 16:08, Brian Burkhalter wrote:

I don’t see what you mean.
    @Override
    public void write(byte buf[]) throws IOException {
        super.write(buf);
    }
Should “trouble” be set and the IOE re-thrown?

super.write(byte[]) will invoke PrintStream overrides write(byte[], int, int) so IOE won't be thrown (and why the proposed change to the class description isn't right). The method description is probably the best place to describe the behavior.

Here is an update which accounts for the foregoing comments.

http://cr.openjdk.java.net/~bpb/8187898/webrev-alt.02/

  609     @Override
  610     public void write(byte buf[]) throws IOException {
  611         super.write(buf, 0, buf.length);
  612     }

This is wrong! The whole point of this bug is to ensure that PrintStream methods honour its contract of NEVER throwing IOException. I mean that is what the bug synopsis and description are all about!

David
-----

Thanks,

Brian

Reply via email to