Java 为什么dir.mkdir()不需要异常处理,而file.createNewFile()需要异常处理?
下面是一段代码片段Java 为什么dir.mkdir()不需要异常处理,而file.createNewFile()需要异常处理?,java,file,file-io,Java,File,File Io,下面是一段代码片段 File dir = new File("dir"); dir.mkdir(); File file = new File(dir,"file.txt"); try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.
File dir = new File("dir");
dir.mkdir();
File file = new File(dir,"file.txt");
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我想知道为什么dir.mkdir()
时不需要异常处理,而file.createNewFile()时需要异常处理
我们是否非常确定在创建目录时“不会出错”?如果是,原因是什么 好问题
这种不同的行为真的没有很好的理由。
createNewFile()
在1.2版中添加到JDK,而mkdir()
在1.0版中添加。这很可能是API设计者决定使用较新功能抛出IOException的原因。你可以肯定mkdir不会抛出IOException,因为合同上说不会。至于为什么。。。耸肩由不同的人在不同的时间以不同的观点来实现什么是“例外”。虽然我同意这是一个设计糟糕的API,但请注意,在创建目录时并没有假设“不会出错”。您只需要检查方法的返回值true
表示目录是创建的,而false
表示目录不是创建的。因为他们就是这样写的。请注意,即使是旧的POSIX也支持几个错误代码。同样适用于SHCreateDirectoryEx
(包括臭名昭著的ERROR\u SUCCESS
)。所以是的,不是最好的设计。