NumberFormatException対策
下のソースをご覧ください。
samples/exception/NumberFormatExceptionTest.java - Eclipse SDK
|
package samples.exception;
public class NumberFormatExceptionTest {
public static void main(String[] args) {
int i;
try {
i = Integer.parseInt("a");
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
}
try {
i = Integer.parseInt("a", 16);
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
}
}
}
|
|
IntegerクラスのparseIntメソッドは、文字列を数値(整数)に
変換するメソッドです。
このメソッドに、「123」など、数字だけで構成された文字列を
渡した場合は、問題なく実行できるのですが、
ここでは「a」という文字を使って、例外を発生させています。
コマンド プロンプト
|
C:\JavaMaster\bin>java -cp . samples.exception.NumberFormatExceptionTest
java.lang.NumberFormatException: For input string: "a"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at samples.exception.NumberFormatExceptionTest.main(NumberFormatExceptionTest.java:7)
10
|
1つ目のtry〜catch では、「a」という、整数として認識できない
文字列をparseIntに渡しているので、
NumberFormatException例外が発生します。
2つ目のtry〜catch でも「a」という文字列を使っていますが、
第2引数に「16」という数値を指定しています。
これは、与えた文字列を16進数として解析するという意味です。
ですから、16進数の「a」(10進数の「10」)として無事に解析が
行われ、「10」が表示されます。
|