public class Test {
public static void main(String[] args) {
File f = new File("file.txt");
FileInputStream input = new FileInputStream(f);
}
}
上面的代码编译器会报错,我们看下FileInputStream的源码,其中有:
public FileInputStream(File file) throws FileNotFoundException {
String name = (file != null ? file.getPath() : null);
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkRead(name);
}
if (name == null) {
throw new NullPointerException();
}
fd = new FileDescriptor();
fd.incrementAndGetUseCount();
open(name);
}
可以看到FileInputStream的构造方法指出,它可能会抛出FileNotFoundException的异常。我们的编译器会检查,发现我们既没有声明异常,也没有抛出,这样就会报错。
public class Test {
public static void main(String[] args) {
File f = new File("file.txt");
try {
FileInputStream input = new FileInputStream(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}

5068

被折叠的 条评论
为什么被折叠?



