019-006-010
カスタム例外階層の設計
上級
問題説明
カスタム例外階層の設計
この問題では: 基底クラスAppExceptionを継承したValidationExceptionとNotFoundExceptionを設計し、UserServiceクラスで条件に応じて異なる例外をスローし、Mainクラスでマルチレベルcatchにより処理するプログラムを作成します。
学習目標: カスタム例外処理の階層設計と、マルチレベルcatchによる例外の選択的処理を理解する
概要
実務のアプリケーションでは、エラーの種類を区別するためにカスタム例外階層を設計します。基底例外クラスから派生させた具体的な例外クラスを使い、catchブロックで種類ごとに異なる処理を行います。
仕様
AppException(Exceptionを継承): メッセージを受け取るコンストラクタを持つValidationException(AppExceptionを継承): メッセージを受け取るコンストラクタを持つNotFoundException(AppExceptionを継承): メッセージを受け取るコンストラクタを持つUserServiceクラスvoid findUser(String name) throws AppException- nameが空文字列の場合:
ValidationException("Name cannot be empty")をスロー - nameが
"unknown"の場合:NotFoundException("User not found: unknown")をスロー - それ以外:
"Found user: " + nameを出力
MainクラスUserServiceインスタンスを作成findUser("")を呼び出し(ValidationException)findUser("unknown")を呼び出し(NotFoundException)findUser("Alice")を呼び出し(正常)- 各呼び出しはtry-catchで囲み、
ValidationException、NotFoundException、AppExceptionの順でcatch
出力形式
[VALIDATION] Name cannot be empty
[NOT_FOUND] User not found: unknown
Found user: Alice
