package test4;
import java.io.*;
public class Reader {
public static void main(String[] args) {
print(send("test.txt"));
}
public static BufferedReader send(String filename) {
File file = null;
FileReader filer = null;
BufferedReader filed = null;
try {
file = new File(filename);
} catch(FileNotFoundException e) {
System.err.println("Could not find file!");
}
try {
filer = new FileReader(file);
} catch(Exception e) {
System.err.println("Could not initialize file reader!");
}
try {
filed = new BufferedReader(filer);
} catch(Exception e) {
System.err.println("Could not initialize buffered reader!");
}
return filed;
}
}
send方法返回null BufferedReader,因为找不到File。 Eclipse只是说由于print方法存在NullPointerException,但是当我删除所有的try / catch语句时,Eclipse说我需要编写该方法抛出IOException或FileNotFoundException,它也允许我这样做,如果我不要它然后抛出FileNotFoundException。但是,当我尝试捕获File的FileNotFoundException时,Eclipse说这是无法访问的代码?基本上这一点在这里:
try {
file = new File(filename);
} catch(FileNotFoundException e) {
System.err.println("Could not find file!");
}
为什么Eclipse在删除try / catch语句时允许我抛出FileNotFoundException时无法访问此代码?
答案 0 :(得分:4)
文件的构造函数不会抛出FileNotFoundException,你可以在这里看到Javadoc:
public File(String pathname)
通过转换创建一个新的File实例 给定的路径名字符串为抽象路径名。如果给定 string是空字符串,然后结果是空的抽象 路径名。
参数:pathname - 路径名字符串
抛出:NullPointerException - 如果pathname参数为null
但FileReader会抛出!再次,另一个javadoc
public FileReader(File file) throws FileNotFoundException在给出要读取的文件的情况下创建一个新的FileReader。
参数:file - 要从中读取的文件
抛出:FileNotFoundException - 如果文件不存在,则为 目录而不是常规文件,或由于某些其他原因不能 开放阅读。
答案 1 :(得分:0)
try {
file = new File(filename);
} catch(Exception e) {
System.err.println("Could not find file!");
}
答案 2 :(得分:0)
构造函数File(filename)
不会抛出FileNotFoundException
,即使该文件不存在,也可以使用file.exists()
进行检查。
如果您尝试读取不存在的文件,则会抛出FileNotFoundException。
答案 3 :(得分:0)