【问题标题】:Java Static method with "throws IOException" erroring [duplicate]带有“抛出 IOException”错误的 Java 静态方法 [重复]
【发布时间】:2016-02-21 19:28:33
【问题描述】:

我有一个 FileLock 类,用于检查和验证文件,以及一个方法 Validate

public class FileLock {
    public static void Validate(String conf_file) throws IOException{

我的意图是每当遇到 IOException 时,它应该终止。

现在我有了测试类来测试这个。

public class Test{
    public static void main(String[] args){
    String conf_file = args[0];
    FileLock.Validate(conf_file);

现在,这会在 FileLock.Validate(conf_file); 行出现编译时错误 Unhandled exception type IOException 如果我同时添加throws IOExceptionmain(),这个错误就会消失。这是为什么?最好的方法是什么?

【问题讨论】:

  • 谢谢@JonSkeet,所以我应该在这里使用 try catch 块。不过,能否请您解释一下为什么我不能在静态方法中抛出异常?
  • 您可以捕获异常 - 或声明 main 可能会抛出相同的异常。这些是规则。如果您从我链接到的页面中没有得到那么多,我建议您再读一遍(并在您学习 Java 的任何书籍中查找“检查的异常”)。

标签: java exception static-methods ioexception


【解决方案1】:

当一个方法抛出一个异常时,它期望异常被抛出后得到处理。您可以使用 try-catch 块处理异常。在您的情况下,这看起来像:

try {
    FileLock.validate(conf_file);
} catch(IOException e) {
    //handle exception; e.printStackTrace() will print out error stack trace
}

【讨论】:

  • 为什么我不能在静态方法中抛出错误?我犯了什么逻辑错误?
  • 可以在静态方法中抛出错误。错误是在您调用该方法时;如果异常没有被捕获和处理,则存在编译器错误。
猜你喜欢
  • 2023-03-17
  • 2018-09-12
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多