この記事の概要
Aクラスで、Bクラスの例外をそのままthrowするのでなく、catchして変換した内容をthrowする実装例を説明します。
【参考】一般的な設計のポイント
・パッケージ間のシンプルな結合を実現するために、入口クラスのファサード(Facade)を作成
・入口1つで返却される例外の種類も2つ(処理続行、処理中断)くらいだとシンプル
・クラス間の結合は疎結合を目指す。それぞれの独立性が高いこと。変更しても他のクラスへの影響が少ない。
実装説明
■クラス一覧
クラス名 | パッケージ | 説明 |
Exception1 | excep | 独自例外クラス ・Aクラスでthrow |
Exception2 | excep | 独自例外クラス ・Bクラスでthrow |
A | apack | Aクラス ・Bクラスの呼び出し ・Exception2(Bクラスの例外)をcatchし、Exception1をthrow ※ここで送付する例外クラス(レポート)の変換を実施 EX)100件あるものを「処理続行」、「処理中断」の2種に変換できる 100件をtry catchでハンドリングし、throwは2種類 |
B | bpack | Bクラス ・Exception2 の例外をthrow |
Main | 実行クラス ・Aクラスの呼び出し ・Exception1 (Aクラスの例外)をcatchし、Exception1をthro |
■Exception1クラスの実装

■Exception2クラスの実装

■Aクラスの実装

■Bクラスの実装

■Mainクラスの実装

■実行結果
