harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Richard Liang <richard.lian...@gmail.com>
Subject [classlib] Exception throwing compatibility: java.util.Scanner
Date Thu, 06 Jul 2006 12:51:59 GMT
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
    * 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 {
            fail("Should throw StringIndexOutOfBoundsException");
        } catch (StringIndexOutOfBoundsException e) {
            // Expected
        try {
            fail("Should throw PatternSyntaxException");
        } catch (PatternSyntaxException e) {
            // Expected
        try {
            fail("Should throw InputMismatchException");
        } catch (InputMismatchException e) {
            // Expected
        try {
            fail("Should throw StringIndexOutOfBoundsException");
        } catch (StringIndexOutOfBoundsException e) {
            // Expected

Richard Liang
China Software Development Lab, IBM 

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message