プログラムの実行中に、プログラマが想定していなかったエラーを引き起こし、プログラムが途中で強制終了されてしまうようなことがあります。
例えば、下記のようなケースが考えられます。
public class ExpSample{
public static void main(String[] args){
String str;
int a;
str = "あ";
a = Integer.parseInt(str);
System.out.println("変数aに代入されている値は" + a + "です。");
}
}
このサンプルをコンパイルした段階ではエラーは発生しません。
しかし、実際にプログラムを実行すると下記のようなエラーが表示されプログラムは強制終了されてしまいます。
Exception in thread "main" java.lang.NumberFormatException: For input string: "
あ"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at ExpSample.main(ExpSample.java:7)
エラー発生源はInteger.parseInt()メソッドを呼び出しているステートメントです。
Integer.parseInt()メソッドは文字列を整数値に変換してくれるメソッドです。
しかし、引数で指定した文字列が数値として解釈できなかった場合、Integer.parseInt()メソッドはNumberFormatExceptionを投げて、プログラムを強制終了させてしまうのです。
上記サンプルは明らかにプログラマのミスです。
プログラミングをする上で、このような不具合を出さないプログラムを作ることは最も重要なことなのですが、人間が作るものなので100%完璧なものはなかなかできません。
そこでJavaは、このような実行時のエラーを適切に処理するために
例外(
exception)というしくみを備えています。
例外というしくみをうまく使うことで、プログラマが想定しなかったエラーが起きた場合でも、プログラムが突然終了してしまうような現象を防ぐことができ、その場合の対処処理を用意することができます。
もちろん、例外に頼ったプログラムはよくありません。
例外はあくまでもプログラムが異常終了してしまうことを防ぐ最終手段である、というとらえ方が適切です。
※プログラム実行中の処理がエラーにより途中で中断され、ユーザの意思に関係なくプログラムが終了することを
異常終了と言います。