chano
chano

Reputation: 163

calling a function: unreported IOException must be declared to be thrown

I have this code but there is an error to this, I am not good with java so I posted my problem in here... this is my code

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();
       }

the problem is that netbeans declares an error in accessing the SaveFile function. Please help! Thanks

Upvotes: 0

Views: 77

Answers (1)

MadProgrammer
MadProgrammer

Reputation: 347194

saveFile throws an IOException, you need to handle it or pass it on to the caller.

Take a look at The try Block for more details

Without more context it's hard to say what you should do. You could handle the exception within the current method...

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()
    }
}

or declare the current method as throwing an IOException like the SaveFile method does

Your SaveFile method is also, potentially, leaving the file open...

If the file writing process fails for some reason, toTextFile.close may never be called, instead, you should take advantage of the try-finally block, for example

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) {
        }
    }
}

or if you're using Java 7+, you can make use of the try-with-resources functionality, for example...

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]);
        }
    }
}

You may also want to have a read of Lesson: Exceptions and Code Conventions for the Java TM Programming Language, which will make it easier for people to read your code and for you to read others

Upvotes: 2

Related Questions