0

例外は表示されません。Exceptionクラスを拡張してメソッドをオーバーライドし、toStringそれを呼び出しました。条件に応じて haha​​h を表示する必要がありますが、何も表示されません..エラーもありません。

class Excp extends Exception {

        public String toString() {
            return "hahah";

        }
    }

    public class exc {

        boolean a = false;

        void hey() throws Excp {

            if (a)
                throw new Excp();

        }

        public static void main(String... s) {

            try {
                new exc().hey();
            } catch (Excp e) {
                System.out.println(e);
            }

        }
    }
4

3 に答える 3

2

ここ

{
    if(a)
    throw new Excp();
}

falseです。オブジェクトの初期化中にtrueを作成していないため、条件の側には決して入りません。

試す

try
    {   
        Excp exc = new Excp();
        exc.a= true;
        exc.hey();
    }

補足:

1)命名規則に従ってください。

2) カプセル化を提供します。

3) コードを常にフォーマットします。

于 2013-10-02T04:54:40.777 に答える
2

あなたの状態

if(a)

初期化したため、 false が返されますa=false。したがって、ifブロックはステートメントを実行しません

throw new Excp();
于 2013-10-02T04:54:49.803 に答える
1

独自のエラー メッセージを含むカスタム例外が必要だと思います。そうであれば、このようにすることができます

class MyException extends Exception{
    MyException(String errorMsg){
         super(errorMsg);
    }
}

class Test{
    public static void main(String[] args){
          if(someCondition)
               throw new MyException("My error message");
    }
}
于 2013-10-02T04:59:46.177 に答える