У меня есть следующий фрагмент кода в моем проекте, который отлично работает. Я пытался передать PropertyVetoException обратно вызывающему. Удаление блока try-catch и правка public void actionPerformed(ActionEvent e)throws PropertyVetoException
дает ошибку при компиляции. Почему это так.? Как я могу распространить исключение обратно на вызывающего. Я знаю, что метод генерации событий не является «вызывающим», но я хочу распространить исключение на этот метод генерации событий, указав, что произошло исключение, и предпринять корректирующие действия.Почему мы не можем исключить из actionPerformed()
public void actionPerformed(ActionEvent e) {
if(CMD_CHILD.equalsIgnoreCase(e.getActionCommand())) {
if(child.getTitle().equalsIgnoreCase(title)) {
try {
child.setSelected(true);
} catch (PropertyVetoException e1) {
e1.printStackTrace();
}
}
}
}
Поскольку договор 'ActionListener' не позволяет ему. В этом случае вызывающему абоненту все равно. Вероятно, он создается кнопкой на экране. Что вам может понадобиться, это предоставить некоторые средства, с помощью которых контроллер может справиться с исключением в этой ситуации, например, отображением и сообщением об ошибке для правильного состояния приложения. – MadProgrammer
Интерфейс ActionListener определяет, какие методы можно вызывать, какие аргументы эти методы могут иметь и какие исключения они могут бросить. Это называется договором – MadProgrammer