Kodrill

Java SE 17 Silver (1Z0-825-JPN) 試験 / 例外処理 ・ 無料問題 4/5

例外処理 問題4[例外処理の仕組みとチェック例外、非チェック例外、エラーの違い]

次のコードを実行した結果として正しいものを選んでください。

Main.java
public class Main {    static void recurse() {        recurse();    }​    public static void main(String[] args) {        try {            recurse();        } catch (Exception e) {            System.out.println("Exception");        } finally {            System.out.println("finally");        }    }}

選択肢

  • A.Exception と finally が出力される
  • B.Exception だけが出力される
  • C.finally と出力された後、StackOverflowError でプログラムが終了する正解
  • D.3行目でコンパイルエラーになる

解説実行して確認済み

終わりのない再帰呼び出しでスタックがあふれると StackOverflowError が発生します。これは Exception ではなく Error のサブクラスなので、catch (Exception e) では捕捉されません。finally ブロックは例外が捕捉されなくても実行されるので finally と出力され、その後 Error が main の外に伝わってプログラムが終了します。

この問題の答えは、試験の対象バージョンでコードを実際に実行して確かめています。確かめ方は運営者情報に書いています。

「例外処理」の要点を解説記事で読む

「例外処理」の無料問題

ここで公開しているのは無料範囲の問題です。無料登録すると、解答の記録・ダッシュボードでの復習ができ、 プレミアムならこの問題セットの全問題と本番形式の模擬試験も解けます。