Пожалуйста, скажите мне, что описание исключения не появляется - PullRequest
0 голосов
/ 13 июня 2011
package javaapplication16;

class ExceptionoftheGods extends Exception {

    double b;

    ExceptionoftheGods (String msg){
    }

}

class mak {

    static void compute(int a) throws ExceptionoftheGods {
        System.out.println("Called Compute(" + a + ")");
        if(a > 7) {
            throw new ExceptionoftheGods("Dog");
        }
        System.out.println("Normal Exit");
    }    


    public static void main(String[] args) {
        try {
            compute(1);
            compute(9);
        } catch(ExceptionoftheGods e) {
            System.out.println(" Caught " + e);
        }
    }

}

ВЫХОД

run:
Called Compute(1)
Normal Exit
Called Compute(9)
 Caught javaapplication16.ExceptionoftheGods
BUILD SUCCESSFUL (total time: 0 seconds)

Ответы [ 3 ]

5 голосов
/ 13 июня 2011
ExceptionoftheGods(String msg) {
    super(msg); // missing
}
1 голос
/ 13 июня 2011

Вам нужно вызвать конструктор базовых исключений в конструкторе вашего подкласса, иначе сообщение фактически не будет установлено:

ExceptionoftheGods(String msg) {
    super(msg);
}

Кроме того, вы печатаете сам объект исключения, а не сообщение исключения.Если вы хотите напечатать только сообщение, вам нужно напрямую позвонить getMessage(), в противном случае вы получите и тип исключения, и описание.

Измените

System.out.println(" Caught " + e);

на

System.out.println(" Caught " + e.getMessage());
0 голосов
/ 13 июня 2011

Когда вы определяете новый метод, вы должны определить все его функциональные возможности. Если вы хотите, чтобы он работал как метод родительского класса, вы должны вызвать super

Либо вы не определяете конструктор (и оставляете доступным только конструктор -empty- по умолчанию), либо изменяете конструктор.

ExceptionoftheGods (String msg){
  super(msg);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...