ディスク上のファイルを管理し、レポートを xml 形式で保存するクラスがあります。JAXB を使用するため (ただし、他の xml ライブラリを使用できますが、関連性はありません)、jaxb (または他の xml ライブラリ) チェック例外を生成する可能性があります。
カプセル化を維持するために、元のライブラリの例外をライブラリの論理レベルで「変換」する必要があります。しかし、関連性の低いクラスがほとんどなく、クラスの数をあまり増やしたくありません。ファイル関連のクラスなので、その場合は IOException で十分だと思います。
public void save(File file) throws IOException {
try{
JAXBContext jc = JAXBContext.newInstance(ArchiveInfo.class);
Marshaller m = jc.createMarshaller();
m.marshal(this, file);
} catch (JAXBException jexc) {
throw new IOException(jexc);
}
}
- この解決策に同意しますか?単純さと正確さの間の適切なトレードオフですか?
- 適切な例外を見つけたので、幸運でした。そうでない場合は、例外クラスを使用するのは適切な設計ではないため、必然的に独自の例外を定義します。(呼び出し元に Exception をキャッチさせ、暗黙的に RuntimeException もキャッチします)。実行時例外はRuntimeExceptionクラスで共通の祖先を持つのに対し、すべてのチェック例外は持たないのは、例外の構造上の異常ではないでしょうか?