这是在Java 6中.
我不止一次见过人们创建临时文件,做某事,然后将其重命名为输出文件.所有内容都包含在try-finally块中,其中临时文件被删除finally,以防万一之间出现问题.
try {
//do something with tempFile
//do something with tempFile
//do something with tempFile
tempFile.renameTo(outputFile);
}
finally {
if (tempFile.exists())
tempFile.delete()
}
Run Code Online (Sandbox Code Playgroud)
我想知道这样做的好处是什么,而不是直接对输出文件做一些事情,如果出现异常则将其删除.
try {
//do something with outputFile
//do something with outputFile
//do something with outputFile
}
catch (Exception e) {
if (outputFile.exists())
outputFile.delete();
}
Run Code Online (Sandbox Code Playgroud)
我的猜测是,finally当try块可以抛出多种异常时,删除临时文件会使我受益.我猜对了吗?还有什么?
finally总是执行而catch上述不执行上面的异常派生,java.lang.Error它会删除文件,当它无法重命名时(此操作不会在失败时抛出异常... Java IO中的一个古老的错误) .
| 归档时间: |
|
| 查看次数: |
2966 次 |
| 最近记录: |