019-002-011

例外チェーンとcause設定

上級

問題説明

例外チェーンとcause設定

この問題では: 低レベル例外を高レベル例外にラップする「例外チェーン」パターンを実装し、原因の追跡を可能にするプログラムを作成します。

学習目標: 例外チェーン(cause)の仕組みと実務での活用方法を理解する

概要

例外チェーンは、低レベルの例外をキャッチして高レベルの例外に変換する際に、元の例外を原因(cause)として保持するパターンです。

仕様

  • DataAccessException extends Exception: メッセージとcauseを受け取るコンストラクタ
  • ServiceException extends Exception: メッセージとcauseを受け取るコンストラクタ
  • Repository クラス: findById(int id) メソッド
    • id < 0 の場合: DataAccessException("Invalid ID: " + id, new IllegalArgumentException("ID must be positive")) をスロー
  • Service クラス: getUser(int id) メソッド
    • Repository.findById() を呼び、DataAccessException をキャッチして ServiceException にラップ
  • Mainクラスで例外チェーンを辿り、各レベルのメッセージを出力

出力形式

Service error: Failed to get user
  Caused by: Invalid ID: -1
  Root cause: ID must be positive

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方

新規登録