2016-06-15 5 views
1

У меня есть этот код:Передайте сообщение об исключении из класса отца, не создавая сообщение с throw throw exception();

public class ExceptionFather extends Exception {} 

public class ExceptionSon extends ExceptionFather { 
    String someMessage; 
    public ExceptionSon() { 
     super(someMessage); 
    } 
} 

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

Проблема в том, что это дает мне синтаксическую ошибку, говорящую, что у меня должен быть конструктор, который получает сообщение в качестве параметра.

+2

Два общественных классы верхнего уровня не должны быть в том же файле – Li357

+1

Они не являются, это identation ошибки – Eyzuky

ответ

2

Вы должны определить конструктор, который принимает аргумент String в ExceptionFather классе:

class ExceptionFather extends Exception { 
    public ExceptionFather(String message) { 
     super(message); 
    } 
} 

После этого, вы сможете написать super(yourString) в дочернем классе ExceptionSon. yourString не должен быть переменной экземпляра дочернего элемента, поскольку он не может быть доступен до того, как был вызван конструктор супертипа. Но вы имеете право использовать статический (класс) переменные или String литералов в этом случае:

class ExceptionSon extends ExceptionFather { 
    private static String message = "message"; 
    public ExceptionSon() { 
     super(message); // or just "message" 
    } 
} 
+0

спасибо , но это вызывает еще одну трудность: теперь, когда я бросаю класс ExceptionFather, он запрашивает ввод строки, потому что для его конструктора требуется строка. – Eyzuky

+1

@Eyzuky, вам нужно определить конструктор без параметров, потому что, когда вы объявили другой конструктор, конструктор по умолчанию не будет установлен компилятором (когда нет конструкторов, компилятор поставит вам по умолчанию) – Andrew

+0

@Eyzuky , просто запомните простое правило - конструкторы не наследуются от родителя к ребенку. – Andrew

 Смежные вопросы

  • Нет связанных вопросов^_^