2014-04-05 65 views
0

我不断收到FileNotFoundException,即使I'm把它扔。任何帮助,将不胜感激:)错误:未报告的异常java.io.FileNotFoundException;必须捕获或声明抛出[7]

Here's代码:

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 

回答

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 
     } 
    } 
+0

感谢。我添加了“抛出FileNotFoundException异常”的main()方法,但现在我有两个人,一个在main(),一个在FILEREAD方法。这是一个错误还是对的? – user3207874

+1

从句法上看,它是正确的。但是一般来说,你应该捕获你的编译时(checked)异常并且做适当的处理/处理而不是盲目地抛出它。 – sakura

1

must be caught or declared to be thrown

究竟你这里不明白吗? 您使用的方法fileRead会抛出FileNotFoundException,因此您必须追上它,或者向上手,所以你main方法需要一个throws子句。

但后者的选择,当然,一个坏的。因此,只需在try/catch块中包装readFile调用即可。

相关问题