Javaちょこっとリファレンス
HOME > try-catch-finally構文

try-catch-finally文

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


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

構文

try-catch-finally構文
try { //例外が発生する可能性がある処理 } catch(<例外の種類> <変数名>) { //例外発生時の処理 } finally { //例外の発生如何に係らず実行する処理 }

サンプルソースコード

例)引き数を2つ受け取り割り算をする

TryCatchSample.java
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 終了
このエントリーをはてなブックマークに追加

構文カテゴリ

HOMEへ戻る TOPへ戻る