More Related Content
More from Appresso Engineering Team
More from Appresso Engineering Team (20)
Effective Java 輪読会 項目60-62
- 2. 第9章 例外
項目57 例外的状態にだけ例外を使用する
項目58 回復可能な状態にはチェックされる例外を、プログラミン
グエラーには実行時例外を使用する
項目59 チェックされる例外を不必要に使用するのを避ける
項目60 標準例外を使用する
項目61 抽象概念に適した例外をスローする
項目62 各メソッドがスローするすべての例外を文書化する
項目63 詳細メッセージにエラー記録情報を含める
項目64 エラーアトミック性に努める
項目65 例外を無視しない
2
- 4. 既存の例外の再利用
4
一般的な(ほとんどの) API が必要とする例外スロー
その大部分で Java のチェックされない例外を使用可能
⇒ 例外の再利用を高いレベルで行うことができる
既存の例外を再利用する利点
API を学んで使用するのが容易に
API を使用するプログラムが読みやすい
例外クラスが少ない
⇒ より小さいメモリ量、より短いクラスロード時間
- 10. 例外連鎖
10
上位レベルの例外を発生させた問題のデバッグ
下位レベルの原因を特定するために例外連鎖を使用
例外連鎖とは例外翻訳の特別な形式
下位レベルの例外は何らかの方法で上位レベルの例外に渡される
連鎖可能なコンストラクタ
Throwable の initCause メソッド
上位レベルの例外が下位レベルの例外を取り出すためのアクセッサを提
供// 例外連鎖
try {
... // 処理するために下位レベルの抽象概念を使用する
} catch (LowerLevelException cause) { // 連鎖可能なコンストラクタを使用
throw new HigherLevelException(cause);
} catch (AnotherLowerLevelException cause) { // Throwable.initCause(Throwable) を使用
AnotherHigherLevelException ex = new AnotherHigherLevelException();
ex.initCause(cause);
throw ex; // 連鎖可能なコンストラクタを使用
}