在我的应用程序中,我正在读取配置文件,如果该文件不可用,则抛出异常。
if (!File.Exists(configurationFile))
{
throw new ArgumentException("Configuration file is missing.");
}
这里发生的事情是,即使文件存在,flow也会转到throw语句。我还注意到,如果从if块中删除throw语句,则此流程正常工作,即如果文件存在,则控制不会进入if块。
以前有人遇到过这个问题吗?任何指针都会有所帮助。
答案 0 :(得分:6)
File.Exists会因多种原因返回false,而不仅仅是因为文件不存在(这可以解释为什么即使文件存在也仍然失败)。
来自MSDN:
如果调用者具有所需权限且路径包含,则返回true 现有文件的名称;否则,错误。此方法也会返回 如果path为null,无效路径或零长度字符串,则返回false。如果 调用者没有足够的权限来读取指定的 文件,没有抛出异常,方法返回false,无论如何 路径的存在。
答案 1 :(得分:3)
如果从if块中删除throw语句,则此流程正常工作,即如果文件存在,则控制不会进入if块。
这必须是调试器/调试故障。
答案 2 :(得分:2)