我正在尝试测试throws FileNotFoundException
。首先,我将exec.txt
放在我的项目文件夹中,以测试我的"testing"
字符串&当我运行我的程序时,它工作正常。
但是现在,我从我的文件夹中删除了exec.txt
文件,看看catch()
方法中的main
部分是否有效,但事实并非如此。 File not found
部分的catch()
部分不会出现在控制台中。
import java.io.*;
public class Crashable {
public static void openFile(String f) throws FileNotFoundException {
PrintWriter f1 = new PrintWriter(f);
f1.write("testing");
f1.close();
}
public static void main(String[] args) {
String f = "exec.txt";
try {
openFile(f);
} catch(FileNotFoundException e) {
System.out.println("File not found");
}
}
}
答案 0 :(得分:0)
如文档中所述,如果无法访问或创建文件,则会引发FileNotFoundException
。
FileNotFoundException - 如果给定的字符串不表示现有的可写常规文件,并且无法创建该名称的新常规文件,或者在打开或创建文件时发生其他错误
在您的情况下,它可以创建一个新文件,因此不会抛出任何异常。
答案 1 :(得分:0)
你可以通过尝试在不存在的目录中创建文件来抛出execption:
String f = "zzz/exec.txt"
答案 2 :(得分:0)
您永远不会在openFile
方法中抛出异常。来自Java docs,
public PrintWriter(文件文件) 抛出FileNotFoundException
使用指定的文件创建一个没有自动行刷新的新PrintWriter。这个便利构造函数创建了必要的 中间OutputStreamWriter,它将使用编码字符 此虚拟机实例的默认字符集。
参数: file - 要用作此writer的目标的文件。如果该文件存在,那么它将被截断为零大小;否则,一个新的 文件将被创建。输出将被写入文件并且是 缓冲。
因此,如果该文件不存在,则创建一个新文件。基本上,一切都正常,因为虽然文件不存在,但是当您创建PrintWriter
对象时,它会创建一个新文件,并且不会抛出错误。
答案 3 :(得分:0)
实际上,每次使用这段代码创建一个新文件:
PrintWriter f1 = new PrintWriter(f);
f1.write("testing");
f1.close();
而是试试这个:
public static void openFile(String f) throws FileNotFoundException {
File file = new File(f);
if(!file.exists())
{
throw new FileNotFoundException();
}
else
{
//do Something with the file
}}
希望有所帮助......