javaの例外は、プログラムの誤りを通知し、適切なエラー処理を行う為の機能になります。
例外をうまく使うことで、エラーが起こった時にうまく処理する仕組みにすることができます。
例外の例
ArrayIndexOutOfBoundsException 配列の長さを超えている FileNotFoundException ファイルが見つからなかった IllegalArgumentException 引数が異常な値だった OutOfMemoryError メモリが足りなくなった
等のエラーを拾うことができ、エラー内容に応じた処理にするとキレイなコードになります。
実際にテストコードを書いて、例外をおこしてみます。
下記のコードを書いてコンパイルすると、コンパイルエラーがおきます。
public class TestException { public static void main(String[] args) { int[] TestArray = new int[3]; TestArray[50] = 0; } }
上のコードのエラーを、例外をキャッチしてエラー処理を行うようにしてみます。
public class TestException { public static void main(String[] args) { int[] TestArray = new int[3]; try { TestArray[50] = 0; } catch(Exception e) { System.out.println("例外 -> " + e); } } }
これを実行すると、次のような結果が出力されます。
例外 -> java.lang.ArrayIndexOutOfBoundsException: 50
さらに、public static void mainの中でメソッドを呼び、そのメソッドの中で例外を発生させる。
package TestPackage; public class ExecptionTest1 { public static void main(String[] args) { int[] TestArray = new int[3]; System.out.println("Void Main start !"); try { System.out.println("Try start !"); TestFunc(TestArray, 100, 0); System.out.println("Try end !"); //TestArray[50] = 0; } catch (Exception e) { System.out.println("例外 -> " + e); } System.out.println("Void Main end !"); } static void TestFunc(int[] arr, int index, int value) { System.out.println("TestFunc start !"); arr[index] = value; System.out.println("TestFunc end !"); } }
上記のコードを実行すると、次のような出力になる。
Void Main start ! Try start ! TestFunc start ! 例外 -> java.lang.ArrayIndexOutOfBoundsException: 100 Void Main end !
Tryの中でTestFuncメソッドが呼ばれ、そのメソッド内で例外が発生したら、
もともとのTryにあるcatchが働き、例外処理がされる。