错误:未报告的异常java.io.FileNotFoundException;必须被抓或宣布被抛出[7]

时间:2014-04-05 09:06:39

标签: java filenotfoundexception

我继续得FileNotFoundException,即使我扔了它。任何帮助将不胜感激:))

这是代码:

import java.util.*;
import java.io.*;

public class kt_6_2 {
    public static void main(String[] args) {
        File file = new File("magicSquare.txt");
        fileRead(file);
    }
    static void fileRead (File dummyFile) throws FileNotFoundException {
        Scanner scanner = new Scanner(dummyFile);
        String[] squareLines = new String[3];
        for (int a = 0; a < 3; a++) {
            squareLines[a] = scanner.nextLine();
            scanner.nextLine();
        }
        System.out.println(squareLines[2]);
    }
}

Ninjaedit-错误消息:

kt_6_2.java:7: error: unreported exception FileNotFoundException; must be caught
 or declared to be thrown
                fileRead(file);
                        ^
1 error

2 个答案:

答案 0 :(得分:4)

由于您的主要方法是调用fileRead()方法。而不是处理异常,你的fileRead()方法决定抛出异常。

因此,在异常情况下,一旦从fileRead()方法抛出它,就应该在main()方法中捕获它。但是,你的main()可以进一步抛出这个异常。

你需要写为

public static void main(String[] args) throws FileNotFoundException {
 ....

或者如果你想处理异常,你应该写为:

public static void main(String[] args) {
    File file = new File("magicSquare.txt");
     try{
        fileRead(file);
      } catch (FileNotFoundException ex) {
           //exception handling code
      }
  } 

答案 1 :(得分:1)

  

必须被抓住或宣布被抛出

你究竟在这里不明白什么? 您使用可以抛出fileRead的方法FileNotFoundException,因此您必须捕获它,或者向上移动它,因此您的main方法需要一个throws子句。

但后者的选择当然是一个糟糕的选择。所以简单地将readFile invokation包装在try / catch块中。