This is a great example.  The last two aren't even legal exceptions for
that method.

It seems like the RI is doing random crap, and it wouldn't be something
that someone would depend on... can you imagine?

try {
    Scanner.nextInt(foo);
}
catch {StringInxOutOfBndsEx bar) {
    ... real problem...
}
catch (InputMismatchEx woogie) {
    ... erm, a 1?
}
catch (PatternSyntaxException blough) {
    .. a 0
}

This is something where I'd suggest we consider doing it per the spec,
and noting the difference...  I can't even imagine someone depending on
the IME or PSE to find 1 and 0 respectively...

geir


Richard Liang wrote:
> Hello All,
> 
> When I'm trying to implement Scanner.nextInt(int radix), I met a problem.
> 
> As we all know, Character.MIN_RADIX equals 2 and Character.MAX_RADIX
> equals 36, so the parameter radix can not less than 2 or greater than
> 36, Otherwise that parameter is illegal.
> 
> But on RI, when the parameter radix is illegal, there are different
> kinds of Exception thrown.
> 
>    * If the parameter is less than 0 or greater than 36, RI throws a
>      StringIndexOutOfBoundsException. Obviously this exception depends
>      an RI's implementation.
>    * If the parameter equals 1, RI throws an InputMismatchException
>      with an additional information "The radix 1 is less than the
>      Character.MIN_RADIX".
>    * If the parameter equals 0, RI throws a
>      java.util.regex.PatternSyntaxException whose constructor has three
>      parameters. And the parameters depends on RI's implementation,
>      that makes me can not follow RI.
> 
> And nothing is documented in the spec. Shall I follow RI's behavior?
> Thanks a lot.
> 
> Here is the test case to demo this issue.
> 
> public void test_nextIntI(){
>       Scanner s = new Scanner("123 456");
> 
>       try {
>            s.nextInt(-1);
>            fail("Should throw StringIndexOutOfBoundsException");
>        } catch (StringIndexOutOfBoundsException e) {
>            // Expected
>        }
>        try {
>            s.nextInt(0);
>            fail("Should throw PatternSyntaxException");
>        } catch (PatternSyntaxException e) {
>            // Expected
>        }
>        try {
>            s.nextInt(1);
>            fail("Should throw InputMismatchException");
>        } catch (InputMismatchException e) {
>            // Expected
>        }
>        try {
>            s.nextInt(40);
>            fail("Should throw StringIndexOutOfBoundsException");
>        } catch (StringIndexOutOfBoundsException e) {
>            // Expected
>        }
> }
> 

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to