我完全被这个问题难住了,我有一个静态类试图检测目录是否存在,但由于某种原因,它抛出了以下错误:
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
不为空,那么您需要调试应用程序,有些东西并不像看起来的那样