Java 当我正在读取的文件存在时,程序会给我 FileNotFoundException,但如果我处理异常,则可以正常工作
Java program gives me FileNotFoundException when the file I am reading from exists but then works perfectly fine if I handle the exception
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class WordJumble {
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
File file = new File("F:/Files/Topic.txt");
Scanner sc = new Scanner(file);
String title = sc.nextLine();
System.out.println(title);
for(int i=0;i<10;i++){
System.out.println(sc.nextLine());
}
}
}
目前程序正在做我想要的,但为什么它给我一个关于文件不存在的错误?当我添加 throws
子句以忽略错误时,它能够毫无问题地找到文件。
虽然错误的措辞可能有点令人困惑,但错误本身并不是 FileNotFoundException,而是抱怨您没有处理 可能性 抛出这样的异常。您的编译器只告诉您,您需要处理文件不在您认为的位置的可能性。因此,当您将 throws FileNotFoundException
添加到方法签名时,编译器会满意并且您的错误消失了。
当您说 'add the statement to ignore the error' 时,您的意思是将 'throws...' 子句添加到 main
的定义中,以便它可以干净地编译。对吗?
如果找不到文件,Scanner
许多人会抛出 FileNotFoundException
。必须在某处处理(捕获)此异常。
相反,您选择不处理,并表示它可以从 main
.
传播出去
执行此操作的适当方法是使用 try - catch
结构。
try {
Scanner sc = new Scanner(file);
:
:
catch (FileNotFoundException ex) {
... print an error or something ...
}
使用这种方法使得错误处理成为代码的主要流程'out of line'。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class WordJumble {
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
File file = new File("F:/Files/Topic.txt");
Scanner sc = new Scanner(file);
String title = sc.nextLine();
System.out.println(title);
for(int i=0;i<10;i++){
System.out.println(sc.nextLine());
}
}
}
目前程序正在做我想要的,但为什么它给我一个关于文件不存在的错误?当我添加 throws
子句以忽略错误时,它能够毫无问题地找到文件。
虽然错误的措辞可能有点令人困惑,但错误本身并不是 FileNotFoundException,而是抱怨您没有处理 可能性 抛出这样的异常。您的编译器只告诉您,您需要处理文件不在您认为的位置的可能性。因此,当您将 throws FileNotFoundException
添加到方法签名时,编译器会满意并且您的错误消失了。
当您说 'add the statement to ignore the error' 时,您的意思是将 'throws...' 子句添加到 main
的定义中,以便它可以干净地编译。对吗?
如果找不到文件,Scanner
许多人会抛出 FileNotFoundException
。必须在某处处理(捕获)此异常。
相反,您选择不处理,并表示它可以从 main
.
执行此操作的适当方法是使用 try - catch
结构。
try {
Scanner sc = new Scanner(file);
:
:
catch (FileNotFoundException ex) {
... print an error or something ...
}
使用这种方法使得错误处理成为代码的主要流程'out of line'。