【发布时间】:2012-02-08 01:15:22
【问题描述】:
我有一个朋友在这件事上与我意见相左,我只是想就在这种情况下谁对谁错得到一些反馈。
FileInfo file = ...;
if (file.Exists)
{
//File somehow gets deleted
//Attempt to do stuff with file...
}
我的朋友指出的问题是,“如果我检查是否存在文件存在怎么办?没有什么可以防止在检查后文件被删除并尝试访问它导致异常。那么,是否值得事先检查是否存在?"
我唯一能想到的就是 MSDN 清楚地检查了他们的示例,因此肯定还有更多内容。 MSDN - FileInfo。但是,它确实让我想知道......额外的电话是否值得?
【问题讨论】:
-
我或多或少同意你朋友的观点。为了使代码健壮,您应该捕获异常,这使得
file.Exists位冗余。另一方面,如果我正在处理大量文件,其中许多文件可能不存在,我可能会在其中插入file.Exists位以避免触发异常处理机制的开销。 -
请记住,拥有任何没有抛出异常的异常块不会降低性能成本,这很难反对不使用异常处理,尤其是在文件的情况下。否则,您在检查和调用之间的时间是毫秒。
标签: c# exception filesystems filenotfoundexception