У меня есть событие, и оно генерирует исключение, если «windowok» == false. Это, как я построил событие:Захват исключения и завершение программы
public class GreenhouseControls extends Controller {
public class WindowMalfunction extends Event {
private Boolean windowok = false;
private void set(Boolean windowok) {
this.windowok = windowok ;
}
public WindowMalfunction(long delayTime) {
super(delayTime);
}
public void action() throws ControllerException {
if (!windowok) {
throw new ControllerException("Window Malfunction", 1);
}
}
public String toString() {
return "Windok OK = " + windowok;
}
}
}
Исключение попадает в другой класс называется контроллером, например так:
public class Controller {
private List<Event> eventList = new ArrayList<Event>();
private Long wait;
public void addEvent(Event c) {
eventList.add(c);
}
public void shutdown(Long wait) {
this.wait = wait;
}
public void run() {
while(eventList.size() > 0)
for(Event e : new ArrayList<Event>(eventList))
if(e.ready()) {
System.out.println(e);
try {
e.action();
}
catch(ControllerException ex) {
shutdown(); // WHAT DO I DO HERE?
}
eventList.remove(e);
}
}
мне нужно инициировать метод отключения() в классе контроллера для завершения , но для этого я должен переопределить метод shutdown() в классе GreenhouseControls. Где я должен переопределять этот метод в классе GreenhouseControls и должен ли я называть метод shutdown() в блоке catch или просто инициировать процесс, который вызовет переопределенный метод в классе GreenhouseControls?
В качестве побочного примечания вы не должны использовать Вершины в штучной упаковке (Long, Boolean и т. Д.) Без цели. – Sinkingpoint
Ваши имена переменных указывают на то, что текст вашего диалогового окна, вероятно, неверен. Используйте глаголы как кнопки, никогда не когда-либо «хорошо», «да» или «нет». – AJMansfield
Чтобы решить главный вопрос, почему вам НУЖНО переопределить метод выключения. Непонятно, 1) что вы пытаетесь сделать, и 2) почему вы полагаете, что вам нужно сделать это так, как вы заявили. – user1445967