Directory.Exists выбрасывает объект, не установленный в экземпляр исключения объекта - PullRequest
0 голосов
/ 02 ноября 2018

Я полностью озадачен этим, у меня есть статический класс, пытающийся определить, существует ли каталог, но по какой-то причине он выдает следующую ошибку:

    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 path\Program.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

Кто-нибудь испытывал что-либо подобное? Кажется, я не могу найти решение.

1 Ответ

0 голосов
/ 02 ноября 2018

Итак, давайте посмотрим на документацию

Directory.Exists (String) Метод

Не выдает никаких исключений

CreateDirectory (String)

Создает все каталоги и подкаталоги по указанному пути если они уже существуют.

Исключения

  • IOException
    • Указанный путем каталог является файлом. -или-
    • Имя сети неизвестно.
  • UnauthorizedAccessException
    • Абонент не имеет необходимого разрешения.
  • ArgumentException
    • путь - строка нулевой длины, содержит только пробел или один или несколько недопустимых символов. Вы можете запросить недействительным символы с помощью метода GetInvalidPathChars (). -или-
    • путь имеет префикс или содержит только двоеточие (:).
  • ArgumentNullException
    • путь нулевой.
  • PathTooLongException
    • Указанный путь, имя файла или оба превышают установленную системой максимальную длину.
  • DirectoryNotFoundException
    • Указан неверный путь (например, он находится на несопоставленном диске).
  • NotSupportedException
    • путь содержит двоеточие (:), которое не является частью метки диска ("C: \").

Понятно, что CreateDirectory(String) это не ваша проблема

Таким образом, при выводе единственная очевидная проблема здесь exportPath равна нулю

Для чего это актуально

Что такое исключение NullReferenceException и как его исправить?

если exportPath не равно нулю, то вам нужно отладить ваше приложение, что-то не так, как кажется

...