try catch
プログラム実行時に異常終了することがあります。実際のシステムではサービスが止まってしまうことになりますので、絶対に避けなければいけません。このため異常終了を検知する命令「try catch」があります。
プログラム例
プログラムで見ていきましょう。プロジェクトjava01にパッケージstep13を作成してください。ここにMain,Subクラスを作成し次のプログラムを入力してください。
1 2 3 4 5 6 7 |
package step13; public class Main { public static void main(String[] args) { Sub sub = new Sub(); } } |
1 2 3 4 5 6 7 8 |
package step13; public class Sub { public Sub() { int[] n = new int[5]; System.out.println(n[5]); } } |
入力が完了したら実行してください。
クラスSubの6行目で「ArrayIndexOutOfBoundsException」エラーのため異常終了しました。このエラーを検知しましょう。クラスSubを次のように修正し、実行してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package step13; public class Sub { public Sub() { int[] n = new int[5]; try { System.out.println(n[5]); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("エラーが発生しました。"); System.out.println(e.getMessage()); } finally { System.out.println("finally"); } System.out.println("Sub終了します。"); } } |
エラーを検知できました。これでプログラムの異常終了を回避できます。今回は「ArrayIndexOutOfBoundsException」タイプを検知しましたが、どのようなタイプの異常終了が発生するかわからないことが多いです。そのため全てのタイプを表す「Exception」があります。これを最後に記述しておけば全ての異常終了を検知できます。下記にプログラム例を掲載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package step13; public class Sub { public Sub() { int[] n = new int[5]; String s = "a"; s = null; try { System.out.println(s.length()); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("エラーが発生しました。"); System.out.println(e.getMessage()); } catch(Exception e) { System.out.println("何らかのエラーが発生しました。"); System.out.println(e.getMessage()); } finally { System.out.println("finally"); } System.out.println("Sub終了します。"); } } |