解决了!谢谢大家的快速解答,问题是,我认为如果你捕获一个异常,你仍然需要添加抛出异常的标题 ^^非常愚蠢我,再次感谢! ------------------------------------ ORIGINAL POST ------- 你好, 我有一个方法load(),这个方法抛出IOException。 我想做到这一点:
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equals("Load")){
load();
}
}
问题是,我应该向actionPerformed添加抛出IOException,但是如果我这样做的话。 我得到一个错误说:“该类未被声明为抽象或未覆盖public void actioPerformed()
答案 0 :(得分:2)
所以如果load
抛出IOException
,你需要弄清楚你想要发生什么。方法调用 actionPerformed
并不期望IOException
,因此无法处理它。
你可以处理吗,例如通过显示错误消息并让用户再试一次?如果是这样,请在try/catch
中放置一个actionPerformed
块并以此方式处理。
如果你不能,你可以捕获异常并将其包装在RuntimeException
中。这通常是处理异常的相当苛刻的方式,但在某些情况下,这是最好的方法。 Swing将捕获异常并将其记录下来,因此在这种情况下它可能没什么帮助......但您也可以更改该默认行为。
答案 1 :(得分:1)
是否有理由不能通过load()
- try
块简单地将catch
的呼叫包围起来?例如:
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Load")) {
try {
load();
} catch(IOException e) {
// Handle the error here
}
}
}
这假设您在load()
失败时可以执行某些行为。 load()
做了什么?如果无法加载,您的应用程序应该怎么做?
答案 2 :(得分:0)
您需要抛出IOException,还是使用try / catch包围执行的方法(可能是getActionCommand()?)。
答案 3 :(得分:0)
您必须考虑如何在IOException
的上下文中处理actionPerformed()
。
一种方法是使用try / catch块,并在catch中显示一个对话框,告诉用户出现了问题。如果你能将异常翻译成有意义的东西,那就更好了,如果你能给用户一些方法来解决这个问题,那就更好了。
顺便说一句,如果你正在进行一些长时间运行的IO操作,你不应该在事件调度线程上这样做 - 它会导致你的GUI出现延迟。而不是在多个动作之间共享一个ActionListener
(使用if条件来查看您被调用的动作),为每个动作创建一个AbstractAction
的子类。