如果条件失败,如果异常从If块内部抛出

本文关键字:如果 内部 If 条件 失败 异常 | 更新日期: 2023-09-27 18:16:08

在我的应用程序中,我正在读取配置文件,如果文件不可用,抛出异常。

if (!File.Exists(configurationFile))
{
    throw new ArgumentException("Configuration file is missing.");
}

这里发生的是,即使文件存在,流也会转到throw语句。我还注意到,如果我从If块内部删除throw语句,那么这个流程可以正确工作,即如果文件存在,控制不会进入If块。

以前有人遇到过这个问题吗?

如果条件失败,如果异常从If块内部抛出

文件。Exists会由于多种原因返回false,而不仅仅是文件不存在(这可以解释为什么即使文件存在,它仍然失败)。

来自MSDN:

如果调用者具有所需的权限并且路径包含现有文件的名称;否则,假的。这个方法还返回如果path为空、无效路径或零长度字符串,则为False。如果调用方没有足够的权限读取指定的文件,则不会抛出异常,并且该方法无论如何都会返回false路径的存在性

如果我从If块中删除throw语句,那么这个流程就会正确工作,即如果文件存在,控制不会进入If块。

这一定是调试器/调试故障。

引自文档:

如果调用者没有足够的权限来读取指定的文件,则不会抛出异常,并且该方法无论如何都会返回false路径的存在性

因此,您必须确保在具有足够权限的帐户下运行应用程序。