019-004-012
例外翻訳パターン
上級
問題説明
例外翻訳パターン
この問題では: 低レベルの例外(NumberFormatException)をキャッチし、ビジネス層に適した例外(IllegalArgumentException)に変換して再スローする例外翻訳パターンを実装します。
学習目標: 例外翻訳パターンにより、レイヤー間の例外を適切に変換する方法を理解する
概要
レイヤードアーキテクチャでは、低レベルの実装詳細に関する例外を上位レイヤーに直接公開するのは良くありません。例外翻訳パターンでは、低レベル例外をキャッチして、ビジネスロジックの文脈に合った例外に変換します。元の例外はcauseとして保持します。
仕様
OrderServiceクラス:processOrder(String quantityStr, String priceStr)メソッド- 数値変換失敗時のNumberFormatExceptionをIllegalArgumentExceptionに変換
- 変換後の例外メッセージにビジネス文脈を含める
- 元の例外をcauseとして設定
- Mainで呼び出して正常ケースとエラーケースを出力
出力形式
Order total: 1500
Business error: Invalid order quantity: not_a_number
Caused by: java.lang.NumberFormatException
