MENU

【Java Silver】例外処理とtry-catch文の理解

今回は、例外処理に関する問題を解いてみましょう。

問題

次のプログラムを実行した場合の出力はどれになるでしょうか?正しい選択肢を選んでください。

public class Main {
                public static void main(String[] args) {
                    try {
                        int result = divide(10, 0);
                        System.out.println("Result: " + result);
                    } catch (ArithmeticException e) {
                        System.out.println("ArithmeticException caught");
                    } finally {
                        System.out.println("Finally block executed");
                    }
                }

                public static int divide(int a, int b) {
                    return a / b;
                }
            }

選択肢

  • A. Result: 0
  • B. ArithmeticException caught
  • C. ArithmeticException caught
    Finally block executed
  • D. Result: 0
    Finally block executed

答えと解説

回答を見る

答え

C. ArithmeticException caught
Finally block executed

解説

基本説明:

Javaで例外処理を行うにはtry-catch-finallyブロックを使用します。

tryブロックには例外が発生する可能性のあるコードを記載します。

今回の問題では、divideメソッドが10 / 0というゼロによる除算を行いますので、ArithmeticExceptionが発生します。

そのArithmeticExceptionは、次のcatchブロックでキャッチされ、「ArithmeticException caught」というメッセージが表示されます。

最後に、finallyブロックが実行され、「Finally block executed」が出力される仕組みです。

誤答理由:

選択肢AとDは除算が正常に行われる予想ですが、ゼロによる除算は例外を引き起こし、通常の値を返しませんので誤りです。

選択肢Bはcatchブロックの出力だけで、finallyブロックの実行を考慮していないため不正解です。

つまずきポイント:

初心者が特に注意すべきはfinallyブロックの存在です。finallyは例外が発生しても、しなくても必ず実行されます。

例えば、リソースの解放や後処理を確実に行いたい場合に利用されます。

さらに、似たような例外の処理を行う際に、例外の種類によって異なるcatchを用意することもあります。

発展知識:

例外処理はプログラムの安定動作に重要です。try-with-resources構文を使うと、リソースの解放を自動で行うことができ、finallyをより利便性の高い形で利用できます。

特定のJDKバージョン以上に対し、try-with-resourcesの理解を深めておくと良いでしょう。

さらなる発展として、ユーザー定義の例外クラスを作成し、詳細なエラーメッセージと共にエラーを管理する方法も、プログラミングの質を向上させます。

目次