Directory.Exists抛出未设置为对象异常实例的对象



我完全被这个问题难住了,我有一个静态类试图检测目录是否存在,但由于某种原因,它抛出了以下错误:

Program.Main encountered an error: Object reference not set to an instance of an object. Stack trace:    at csv.prepareCSVData() in path/csv.cs:line 21
at RLCSVTools.Program.Main(String[] args) in pathProgram.cs:line 31

这是在csv.cs.prepareCSVData:中产生错误的代码

ConfigurationSync.logDebugMessage(logMessageType.warning, "CSV class Dir: " + exportPath);
//this log works and reveals exportPath has been populated
if (Directory.Exists(exportPath) == false)
//breaks here regardless of dir existing or not
{
ConfigurationSync.logDebugMessage(logMessageType.warning, "Recreating the directory: " + exportPath);
// I have never seen this log run
Directory.CreateDirectory(exportPath);
}

我在代码中添加了一些注释,以准确地显示错误发生在哪一行。

该类的所有成员,包括该类,都是静态的。public static class csv

有人经历过这样的事情吗?我似乎找不到解决办法。

所以让我们看看文档

Directory.Exists(字符串(方法

不会抛出任何异常

CreateDirectory(字符串(

在指定路径中创建所有目录和子目录除非它们已经存在。

异常

  • IOException
    • 路径指定的目录是一个文件。-或-
    • 网络名称未知
  • 未授权访问异常
    • 调用方没有所需的权限
  • ArgumentException
    • 路径是一个零长度字符串,只包含空白,或者包含一个或多个无效字符。您可以查询无效字符。-或-
    • 路径以冒号(:(为前缀,或仅包含冒号
  • ArgumentNullException
    • 路径为空
  • PathTooLongException
    • 指定的路径、文件名或两者都超过了系统定义的最大长度
  • 目录NotFoundException
    • 指定的路径无效(例如,它位于未映射的驱动器上(
  • NotSupportedException
    • 路径包含冒号(:(,该字符不是驱动器标签("C:\"(的一部分

很明显,CreateDirectory(String)而不是您的问题

因此,通过重复数据消除,这里唯一明显的问题是exportPath为空

与此相关的

什么是NullReferenceException,我该如何修复它?

如果exportPath不为空,那么您需要调试应用程序,有些东西并不像看起来的那样

最新更新