HOME > try-catch-finally構文

try-catch-finally文

try〜catch〜finally文は、例外(Exception)が発生することを事前に予測して、発生した時の処理を記述しておくときに使用する文法です。

まず、try〜catchの間に例外が発生する可能性がある処理を記述し、catchに発生した例外ごとの処理を記述します。
finallyに書いた処理は、例外が発生してもしなくても必ず実行されます。

構文

 try-catch-finally構文

try {
    //例外が発生する可能性がある処理

} catch(<例外の種類> <変数名>) {
    //例外発生時の処理

} finally {
    //例外の発生如何に係らず実行する処理

}

サンプルソースコード

 引き数を2つ受け取り割り算をするサンプル

public class TryCatchSample {

    public static void main(String args[]) {

        try {
            //引数を受け取る(引数が取れない可能性あり)
            String a = args[0];
            String b = args[1];

            //int型に変換する(int型に変換できない可能性あり)
            int val1 = Integer.parseInt(a);
            int val2 = Integer.parseInt(b);

            //割り算をする(ゼロ除算の可能性あり)
            int result = val1 / val2;

            //結果表示する
            System.out.println(result);

        } catch(ArrayIndexOutOfBoundsException ex) {
            //ArrayIndexOutOfBoundsExceptionが発生した時の処理
            System.out.println("引数の個数が足りません。");

        } catch(NumberFormatException ex) {
            //NumberFormatExceptionが発生した時の処理
            System.out.println("数値ではありません。");

        } catch(ArithmeticException ex) {
            //ArithmeticExceptionが発生した時の処理
            System.out.println("ゼロ除算です。");

        } catch(Exception ex) {
            //上記以外の例外が発生した時の処理
            System.out.println("予期せぬエラーが発生しました。");
            ex.printStackTrace();

        } finally {
            //例外の発生如何に関わらず実行する処理
            System.out.println("終了");

        }

    }

}

実行結果 (引数を渡さない場合)

 コマンドプロンプト

C:\>java TryCatchSample
引数の個数が足りません。
終了

実行結果 (数値ではない引数を渡した場合)

 コマンドプロンプト

C:\>java TryCatchSample A B
数値ではありません。
終了

実行結果 (ゼロ除算になるような引数を渡した場合)

 コマンドプロンプト

C:\>java TryCatchSample 10 0
ゼロ除算です。
終了

実行結果 (例外にならないような引数を渡した場合)

 コマンドプロンプト

C:\>java TryCatchSample 10 2
5
終了

同カテゴリ項目