Exceptions priority in InputStream.read(byte[], int, int)
Joe Darcy
joe.darcy at oracle.com
Wed Jun 24 01:43:48 UTC 2020
Hello,
As a general comment, over time we come to regard specifications like
"if these three pre-conditions of the method are all violated, this
exception will be thrown; if only these two pre-conditions are violated,
this other exception will be thrown" as over specifications and best
avoided.
If any of a method's exceptional conditions are true, the caller should
be prepared to handle any of the possible exceptions.
HTH,
-Joe
On 6/23/2020 8:03 AM, Roger Riggs wrote:
> Hi Raffaello,
>
> Exceptions related to the arguments should be highest priority so they
> are
> not obscured by any more dynamic state related to the stream.
>
> There's no specific order between checks of the arguments,
> though in this case the NPE would naturally occur before IOOBE.
> There are more complex cases where some arguments are not used
> or used conditionally where the checks become dependent on the dynamic
> state.
>
> $.02, Roger
>
>
> On 6/23/20 10:34 AM, Raffaello Giulietti wrote:
>> Hi,
>>
>> the InputStream.read(byte[], int, int) method [1] can throw
>> * IOException
>> * NullPointerException
>> * IndexOutOfBoundsException
>>
>> Is there a recommended priority for the conditions associated to the
>> exceptions to be checked? For example, if the arguments are invalid
>> and the stream is already closed, which exception shall be thrown?
>>
>>
>> Greetings
>> Raffaello
>>
>> ----
>>
>> [1]
>> https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/io/InputStream.html#read(byte%5B%5D,int,int)
>
More information about the core-libs-dev
mailing list