[ 
https://issues.apache.org/jira/browse/IO-696?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17256069#comment-17256069
 ] 

Gary D. Gregory commented on IO-696:
------------------------------------

Make sure you look at git master, not whatever version you're currently pasted 
in the description.

 

> IOUtils.toByteArray throws inconsistent exceptions
> --------------------------------------------------
>
>                 Key: IO-696
>                 URL: https://issues.apache.org/jira/browse/IO-696
>             Project: Commons IO
>          Issue Type: Bug
>            Reporter: ackelcn
>            Priority: Major
>
> The code of this method is as follows:
> {code:java}
> public static byte[] toByteArray(final InputStream input, final int size) 
> throws IOException {        
>       if (size < 0) {
>             throw new IllegalArgumentException("Size must be equal or greater 
> than zero: " + size);
>         }        if (size == 0) {
>             return new byte[0];
>         }        final byte[] data = new byte[size];
>         int offset = 0;
>         int read;        while (offset < size && (read = input.read(data, 
> offset, size - offset)) != EOF) {
>             offset += read;
>         }        
>         if (offset != size) {
>             throw new IOException("Unexpected read size. current: " + offset 
> + ", expected: " + size);
>         }        return data;
>     }
> {code}
> When size is below zero, it throws IllegalArgumentException, but when size is 
> not equal to offset, it throws IOException. It is somewhat confusing. It 
> shall throw IOException in both cases, in that both cases check legal sizes. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to