Java PrintWriter:如果文件在未找到时自动创建,为什么要处理FileNotFoundException?
在以下SSCCE中,即使我从给定位置/路径(即Java PrintWriter:如果文件在未找到时自动创建,为什么要处理FileNotFoundException?,java,file,printwriter,Java,File,Printwriter,在以下SSCCE中,即使我从给定位置/路径(即“D:\\Eclipse workspace\\SAMPLES AND OTHER SNIPPETS\\SoapCallResults.txt”)删除此文件,我也不会得到FileNotFoundException 相反,PrintWriter似乎会在找不到文件时创建该文件 如果Printwriter在找不到文件的情况下创建该文件,为什么我们要尝试处理FileNotFoundException(如果我们没有用try/catch或添加throws子句将其
“D:\\Eclipse workspace\\SAMPLES AND OTHER SNIPPETS\\SoapCallResults.txt”)删除此文件,我也不会得到FileNotFoundException
相反,PrintWriter
似乎会在找不到文件时创建该文件
如果Printwriter
在找不到文件的情况下创建该文件,为什么我们要尝试处理FileNotFoundException
(如果我们没有用try/catch
或添加throws
子句将其包围,编译器会抱怨)而它永远不会被抛出
package com.general_tests;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
public class PrintWriterFileNotFoundExceptionTest {
public static void main(String[] args) {
String myName = "What ever my name is!";
PrintWriter printWriter = null;
try {
printWriter = new PrintWriter("D:\\Eclipse Workspaces\\SAMPLES AND OTHER SNIPPETS\\SoapCallResults.txt");
printWriter.println(myName);
} catch (FileNotFoundException e) {
System.out.println("FILE NOT FOUND EXCEPTION!");
e.printStackTrace();
} finally {
if (printWriter != null) { printWriter.close(); }
}
}
}
FIleNotFoundException是选中的异常。如果代码块抛出这些异常,则需要处理这些类型的异常。对于未检查的异常类型,您不必处理(非强制)。您真的能保证文件已经创建,但没有损坏,或者磁盘记录没有损坏吗?还有,看看这个-
最重要的是,您的构造函数正在抛出FileNotFoundException(请看这里-),您必须捕获它(因为它已被选中)
提示-对于Eclipse,请尝试查看ctrl+SPACe显示的对象方法。如果您的JavaDoc位于正确的位置,您将看到对方法所做操作的所有解释,包括“Throws:SomeException”位。这是调用方法时需要查找的内容(即是否需要为此使用try-catch块)。FIleNotFoundException是选中的异常。如果代码块抛出这些异常,则需要处理这些类型的异常。对于未检查的异常类型,您不必处理(非强制)。您真的能保证文件已经创建,但没有损坏,或者磁盘记录没有损坏吗?还有,看看这个-
最重要的是,您的构造函数正在抛出FileNotFoundException(请看这里-),您必须捕获它(因为它已被选中)
提示-对于Eclipse,请尝试查看ctrl+SPACe显示的对象方法。如果您的JavaDoc位于正确的位置,您将看到对方法所做操作的所有解释,包括“Throws:SomeException”位。这就是调用方法时需要查找的内容(即是否需要为此使用try catch块)。将路径中的Eclipse工作区
替换为foo
,然后查看是否出现异常。可以创建文件本身,但不能创建其上方的整个路径
也可以使路径保持原样,但在文件上设置只读、隐藏和系统属性。操作系统将无法写入或创建它
另一个变体:修改文件的ACL,使您的用户没有写入权限
还有很多。用foo
替换路径中的Eclipse工作区
,看看是否出现异常。可以创建文件本身,但不能创建其上方的整个路径
也可以使路径保持原样,但在文件上设置只读、隐藏和系统属性。操作系统将无法写入或创建它
另一个变体:修改文件的ACL,使您的用户没有写入权限
还有很多。FileNotFoundException是一个选中的异常,它简单地表示您必须捕获它或将它添加到throws子句中
我希望这能回答您的问题,即即使创建了一个文件(如果不存在),为什么我们实际上需要它-
从-
FileNotFoundException-如果给定的文件对象不表示现有的可写常规文件,并且无法创建该名称的新常规文件,或者如果在打开或创建文件时发生其他错误
FileNotFoundException
是选中的异常,也就是说,您要么捕获它,要么将其添加到throws子句中
我希望这能回答您的问题,即即使创建了一个文件(如果不存在),为什么我们实际上需要它-
从-
FileNotFoundException-如果给定的文件对象不表示现有的可写常规文件,并且无法创建该名称的新常规文件,或者如果在打开或创建文件时发生其他错误,文档说明:FileNotFoundException-如果给定的字符串不表示现有文件,无法创建可写常规文件和该名称的新常规文件,或者如果在打开或创建文件时发生其他错误,权限等可能会阻止编写器创建该文件。Downvoter:请告诉我进行downvote的原因,否则没有改进的机会!文档说明:FileNotFoundException-如果给定字符串不表示现有的可写常规文件,并且无法创建该名称的新常规文件,或者在打开或创建filePermissions时发生其他错误,等等,可能会阻止编写者创建文件。Downvoter:请告诉我downvote的原因,否则就没有改进的机会!非常感谢您分享此提示。这是非常有用的。非常感谢你分享的提示。这是非常有用的。