【发布时间】:2011-04-26 03:39:46
【问题描述】:
我的应用程序遍历目录树并在每个目录中尝试打开具有特定名称的文件(使用File.OpenRead())。如果此调用抛出FileNotFoundException,则它知道该文件不存在。我宁愿在此之前拨打File.Exists() 来检查文件是否存在吗?这样会更有效率吗?
【问题讨论】:
-
异常是为了处理意料之外的事情,你可以用它们来保护你的应用程序免受致命的崩溃(空指针等)。在正常的程序流程中使用它们是不好的做法。
-
@Yarek 虽然这通常是个好建议,但如果你不提供替代方案,它在这里就毫无用处。
-
主要问题是AFAIK没有替代方法(除了使用本机API)。 File.TryOpenRead 在这里很有用。
-
好像不会。 0xA3 的评论让我意识到任何 IO 命令都可能失败,因此在使用 FileStream TryOpen 时不会那么有用。需要使用完全不同的 API,如果性能如此重要,则使用本机(甚至可能是异步)IO 可能会更好。
-
.NET 文件函数比 win32 函数慢。如果速度是问题,那是我首先要看的地方。
标签: c# .net exception-handling