那么更好的是什么?要使用这样的结构:
if (File.Exist(fileName))
{
// do something with file...
}
Run Code Online (Sandbox Code Playgroud)
只是
try
{
// do something with file.
}
catch(Exception ex)
{
}
Run Code Online (Sandbox Code Playgroud)
使用方法File.Exist()会花费很多吗?
谢谢!
小智 11
前者有一个竞争条件:另一个进程可能会在File.Exists返回true 后删除该文件,但在打开它之前.后者没有.即使您事先检查,如果要忽略不存在的文件,仍应捕获异常.
所以应该是
if (File.Exists(fileName))
{
try
{
// ...
}
catch (FileNotFoundException)
{ }
}
Run Code Online (Sandbox Code Playgroud)
要么
try
{
// ...
}
catch (FileNotFoundException)
{ }
Run Code Online (Sandbox Code Playgroud)
前者重复检查,如果文件位于网络共享上,则可能会很慢,后者会针对非异常情况引发异常(会被处理),从而使调试变得复杂.两者都有其优点.就个人而言,我通常选择第二个,但要么是好的.
异常不应该用于处理应用程序的流程,其目的是避免异常,而不是将它们视为执行流程的正常部分.
对于99.999%的应用程序,如果存在性能差异,则不会明显.如果文件应该在那里并且找不到特殊情况,你可以使用该 try catch块,否则我会说你应该采用这种File.Exist方法.
| 归档时间: |
|
| 查看次数: |
731 次 |
| 最近记录: |