Details
-
Type:
CSR
-
Status: Closed
-
Priority:
P4
-
Resolution: Approved
-
Fix Version/s: 14
-
Component/s: core-libs
-
Labels:None
-
Subcomponent:
-
Compatibility Kind:behavioral
-
Compatibility Risk:minimal
-
Compatibility Risk Description:There should be little compatibility risk as the overridden method retains the same behavior and the added method is of course new.
-
Interface Kind:Java API
-
Scope:SE
Description
Summary
Override write(byte[])
and add writeBytes
.
Problem
java.io.PrintStream
was supposed to override methods not to throw IOException
as indicated in the class documentation:
Unlike other output streams, a PrintStream never throws an IOException; instead, exceptional situations merely set an internal flag that can be tested via the checkError method.
The method write(byte[])
of java.io.FilterOutputStream
was, however, not so overridden. The method is therefore documented as throwing IOException
but never does so.
Also, there is no write
method which has only a byte array parameter and which is not declared to throw IOException
. Callers are thus obliged in this scenario to write a try-catch block even though IOException
will never be thrown.
Solution
Override write(byte[])
adding clarifying documentation while retaining the existing behavior, and add writeBytes
.
Specification
Please refer to the specifications of write(byte[])
and writeBytes
in the attachments.
Attachments
Issue Links
- csr of
-
JDK-8187898 PrintStream should override FilterOutputStream#write(byte[]) with a method that has no throws clause
-
- Resolved
-