注意してください: 呼び出し元は親の例外のみをスローします!!
と言ってaexception
、 からbexception
継承しparentexception
ます。
method af
、 it throws aexception
、bexception
およびparentexception
.
void af() throws aexception, bexception, parentexception {}
メソッドはandのみをcaller
呼び出します。af
throw parentexception
void caller() throws parentexception
ここで、parentexception のサブクラスの情報が失われました。
メソッドはメソッドをrootCaller
呼び出し、次の例外プロセス キャッチ ブロックによって、およびそれを使用してのみスローできます。caller
rootcaller
catch parentexception
caller
void rootCaller() {
try {
caller();
} catch(parentexception e) {
if(e instanceof aexception) {
......
} else if(e instanceof bexception) {
......
} else if(e instanceof parentexception) {
......
} else {
......
}
}
これは非常に見苦しく、サブクラスが多すぎると、parentexception の一部のサブクラスを簡単に忘れてしまいます。
とにかくそのようなコードを改善する方法はありますか?
現在の答えは私に何の考えも与えることができません:
1、rootCaller は multi-catch を使用してプロセスを簡素化できないため、呼び出し元は親の例外のみをスローします。
2、呼び出し元はparentexceptionのみをスローするため、afが後でaexceptionとbeexception、たとえばcexception以外をスローするように変更された場合、他の例外チェックはありません。