我正在尝试将一个名为SPY.txt
的文件加载到一个数组中,但我甚至无法让这个小片段工作。
我不明白。如果f.exists
为true
,则扫描程序如何抛出未找到文件的异常?
import java.io.*;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
File f = new File (new File("SPY.txt").getAbsolutePath());
System.out.println(f.exists());
Scanner s = new Scanner(f);
}
}
输出:True
线程“main”中的异常java.lang.RuntimeException:Uncompilable 源代码 - 未报告的异常java.io.FileNotFoundException;必须 被抓或被宣布被投掷 scannertest.ScannerTest.main(ScannerTest.java:13)
第13行
Scanner s = new Scanner(f);
答案 0 :(得分:4)
FileNotFoundException是由特定Scanner构造函数抛出的已检查异常。要么用throws子句声明它,要么在那里放一个try-catch块。
这与文件是否存在无关,而是与Java中的异常处理有关。
答案 1 :(得分:4)
线索在错误消息中:
线程“main”中的异常java.lang.RuntimeException:Uncompilable 源代码 - 未报告的异常java.io.FileNotFoundException; 必须被捕获或声明被抛出 scannertest.ScannerTest.main(ScannerTest.java:13)
这意味着Scanner构造函数抛出异常,因此您需要将其放在try / catch块中,如下所示:
import java.io.*;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
//try block starts here
try {
File f = new File (new File("SPY.txt").getAbsolutePath());
System.out.println(f.exists());
Scanner s = new Scanner(f);
}
//catch the exception
catch(FileNotFoundException e) {
e.printStackTrace();
}
}
}
答案 2 :(得分:1)
您不发现未找到该文件的异常,您收到有关无法编译的源代码的错误,因为您没有处理异常
您在
中有“未处理的例外类型FileNotFoundException”new Scanner(f)
解决方案:
try-catch
。main
声明为throw
FileNotFoundException
。//1
try {
File f = new File (new File("SPY.txt").getAbsolutePath());
System.out.println(f.exists());
Scanner s = new Scanner(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
OR
//2
public static void main(String[] args) throws FileNotFoundException {