“未报告的异常IOException;必须被捕获或声明被抛出”。看看编码

时间:2014-02-14 11:39:33

标签: java

我正在编码,打开Windows计算器,但编译器发出错误:

  

未报告的异常IOException;必须被抓住或宣布被抛出。

如果我针对ActionListener方法写入抛出,则不会覆盖它。

部分代码:

else if(e.getActionCommand().equals("Window Calculator")) {
    Runtime.getRuntime().exec("calc");   
}

4 个答案:

答案 0 :(得分:2)

您需要处理Runtime.getRuntime().exec("calc");

的例外情况

试试这个:

else if(e.getActionCommand().equals("Window Calculator")){
    try
    {
        Runtime.getRuntime().exec("calc");
    }
    catch(IOException ioe)
    {
        ioe.printStackTrace();
    }
}

来自OP评论:

If i catch the exception,how will it help..the code that i want to use will not be executed by this

这不会帮助您运行导致异常的代码,但即使发生异常,它也可以帮助您运行程序的其他部分。

答案 1 :(得分:1)

您需要在编译时处理已检查的异常或抛出它们。但是,如果抛出新的或更广泛的检查异常而不是超级方法或接口方法,那么它违反了覆盖或接口实现规则。所以你有唯一的选择在你的代码中处理它们。

注意: - 在您的情况下,您可以处理已检查的异常并吞下它们或将其包装在未经检查的异常(运行时异常)周围并抛出运行时异常。您可以始终抛出一个新的未经检查的(运行时异常)你的超类或接口方法

答案 2 :(得分:1)

您无法将throws声明添加到重写方法,因为这会更改方法的签名。请改用try {} catch {}

答案 3 :(得分:0)

使用try / catch块在本地处理已检查的异常。请查看Jenkov's Tutorial有关该主题的简短教程。

要从Java启动外部程序,您可以使用ProcessBuilder。 Runtime.getRuntime()。exec()在内部执行相同的操作。在此thread

中对此进行了更多讨论
相关问题