1

注意してください: 呼び出し元は親の例外のみをスローします!!

と言ってaexception、 からbexception継承しparentexceptionます。

method af、 it throws aexceptionbexceptionおよびparentexception.

void af() throws aexception, bexception, parentexception {}

メソッドはandのみをcaller呼び出します。afthrow parentexception

void caller() throws parentexception

ここで、parentexception のサブクラスの情報が失われました。

メソッドはメソッドをrootCaller呼び出し、次の例外プロセス キャッチ ブロックによって、およびそれを使用してのみスローできます。callerrootcallercatch parentexceptioncaller

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以外をスローするように変更された場合、他の例外チェックはありません。

4

1 に答える 1