【问题标题】:"unreported exception IOException; must be caught or declared to be thrown". Have a look on the coding“未报告的异常 IOException;必须被捕获或声明为抛出”。看看编码
【发布时间】:2014-02-14 11:39:32
【问题描述】:

我正在编码,打开windows计算器,但编译器报错:

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

如果我针对 ActionListener 方法编写 throws,则它不会被覆盖。

部分代码:

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

【问题讨论】:

  • 您需要捕获异常并将错误记录到屏幕上,或者至少记录操作失败,或者至少忽略它并假装它无关紧要。
  • 您收到“未报告的异常 IOException;必须被捕获或声明为抛出”,因为有一个未报告的异常 IOException 必须被捕获或声明为抛出 :)
  • 如果我捕捉到异常,它将如何帮助..我想使用的代码不会被这个执行..:(
  • @Harsh Exceptions 发生是因为发生了您不希望发生的事情。所以你应该知道如何处理它们。
  • 兄弟..我知道..但我需要帮助..我想知道有没有其他方法可以用代码调用窗口的计算器..?有没有什么可以替代我的代码.." Runtime.getRuntime().exec("calc");".???

标签: java


【解决方案1】:

您需要处理Runtime.getRuntime().exec("calc"); 的异常。

试试这个:

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

来自 OP cmets:

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

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

【讨论】:

    【解决方案2】:

    您不能将throws 声明添加到被覆盖的方法中,因为这会更改方法的签名。请改用try {} catch {}

    【讨论】:

    • 如果我使用 try/catch 那么该异常将被处理但我的代码将不会执行...我希望我的行被执行..但不是例外..还有其他方法吗打开我的 Windows 计算?
    【解决方案3】:

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

    注意:- 在您的情况下,您可以处理已检查的异常并将它们吞下,或者将其包裹在未检查的异常(运行时异常)并抛出运行时异常。与你的超类或接口方法

    【讨论】:

    • 如果写入抛出 IOException 那么该方法会给出一个编译器错误,即覆盖的方法不会抛出异常......如果我使用 try/catch 则该异常将被处理但我的代码不会执行...我希望我的行被执行..但不是例外..还有其他方法可以打开我的 Windows 计算吗?
    • @Harsh 请解释一下这句话。我无法通过“如果我使用 try/catch 则该异常将被处理但我的代码不会执行”
    • 如果在try..中编写我的代码..并在catch..catch中捕获异常将执行但是,我想执行在try块中编写的代码..即“ Runtime.getRuntime ().exec("计算");"。有没有其他方法可以用代码调用 windows calc..?
    【解决方案4】:

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

    要从 Java 启动外部程序,您可以使用 ProcessBuilder。 Runtime.getRuntime().exec() 在内部做同样的事情。在thread 中对此进行更多讨论

    【讨论】:

    • 如果我使用 try/catch 那么该异常将被处理但我的代码将不会执行...我希望我的行被执行..但不是例外..还有其他方法吗打开我的 Windows 计算?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多