【发布时间】:2015-02-17 06:24:31
【问题描述】:
通常,当我使用文件和目录并想检查目录或文件的路径是否存在时,我只使用类似的东西:
if (Directory.Exists(path))
{
//Something...
}
但是,如果我对this 的回答正确,建议允许仍然抛出异常,这意味着不要使用if,而是使用try.. catch。
这是处理文件和目录时的通用方法,还是有时使用if(Directory.Exists... 或类似的东西更可取?
注意:在看到第一个响应后,只是想澄清某些目录/路径可能不存在的情况是预期的正常行为。
【问题讨论】:
-
通常,您不希望异常成为正常执行流程的一部分。例如,您不希望通过将目录的路径传递给
DirectoryInfo来假设目录存在,捕获异常然后在抛出未找到目录的异常时创建它。 -
恕我直言,异常代价高昂,通过代码验证数据的正确性并没有错。 [例如。您仍然可以将一个数字除以 0 并在异常情况下捕获它,但我觉得对数据进行完整性检查要好得多]。 SO专家可以发表更多评论..
-
你总是不得不假设 IO 可能会导致异常。仅仅因为该目录在几毫秒之前存在并不意味着它现在仍然存在。这不太可能,但有可能。