019-005-009
複数リソースの安全な管理
上級
問題説明
複数リソースの安全な管理
この問題では: DatabaseConnectionとQueryExecutorの2つのAutoCloseableリソースをtry-with-resourcesで管理するexecuteQueryメソッドを作成し、有効なクエリでは結果文字列を返し、不正な入力では適切な例外をスローするプログラムを作成します。
学習目標: try-with-resourcesで複数のリソースを管理しながら、例外処理を組み合わせる方法を理解する
概要
try-with-resources文では複数のリソースをセミコロンで区切って宣言でき、宣言の逆順で自動クローズされます。この問題ではリソース管理と入力バリデーションを組み合わせます。
仕様
DatabaseConnectionクラス(AutoCloseable実装)
- コンストラクタ: 引数なし
close(): リソースを解放する
QueryExecutorクラス(AutoCloseable実装)
- コンストラクタ: 引数なし
execute(String query)メソッド:queryがnullの場合、NullPointerException(メッセージ:"Query cannot be null")をスローqueryが空文字列の場合、IllegalArgumentException(メッセージ:"Query cannot be empty")をスロー- 有効な場合、
"Result: " + queryを返す
Mainクラス
static String executeQuery(String query)メソッドを定義する- try-with-resourcesで
DatabaseConnectionとQueryExecutorの両方を宣言する executor.execute(query)の結果を返す
- try-with-resourcesで
動作例
executeQuery("SELECT * FROM users")→"Result: SELECT * FROM users"executeQuery(null)→NullPointerException: "Query cannot be null"executeQuery("")→IllegalArgumentException: "Query cannot be empty"
