调用函数:必须声明要抛出未报告的IOException

时间:2014-10-10 02:40:13

标签: java netbeans

我有这段代码,但是有一个错误, 我对java不好,所以我在这里发布了我的问题...这是我的代码

public static void SaveFile() throws IOException{
        System.out.println("Saving File!");
        FileWriter toTextFile = new FileWriter("output.txt");
        for(x=0;x<new_num_book;x++){
                toTextFile.write(name[x]);
            }
        toTextFile.close();

    }

blah blah
else if(option == 5){
           SaveFile();
       }

问题是netbeans在访问SaveFile函数时声明了一个错误。请帮忙!感谢

1 个答案:

答案 0 :(得分:2)

saveFile会抛出IOException,您需要处理它或将其传递给调用者。

请查看The try Block了解详情

如果没有更多的背景,很难说你应该做什么。您可以在当前方法中处理异常......

else if(option == 5){
    try {
        SaveFile();
    } catch (IOException exp) {
        // Handle the exception, tell the user, roll back, what ever
        // At the very least use exp.printStackTrace()
    }
}

或将当前方法声明为像IOException方法一样抛出SaveFile

您的SaveFile方法也可能会使文件保持打开状态......

如果由于某种原因文件写入过程失败,则可能永远不会调用toTextFile.close,相反,您应该利用try-finally块,例如

public static void SaveFile() throws IOException{
    System.out.println("Saving File!");
    FileWriter toTextFile = null;
    try {
        toTextFile = new FileWriter("output.txt");
        for(x=0;x<new_num_book;x++){
            toTextFile.write(name[x]);
        }
    } finally {
        try {
            toTextFile.close();
        } catch (Exception exp) {
        }
    }
}

或者如果您使用的是Java 7+,则可以使用try-with-resources功能,例如......

public static void SaveFile() throws IOException{
    System.out.println("Saving File!");
    try (FileWriter toTextFile = new FileWriter("output.txt")) {
        for(x=0;x<new_num_book;x++){
            toTextFile.write(name[x]);
        }
    }
}

您可能还希望阅读Lesson: ExceptionsCode Conventions for the Java TM Programming Language,以便人们更轻松地阅读您的代码并让您阅读其他人