Добрый день.
Подскажите, как поймать неуловимый null?
Есть программа с таким методом:
private async Task checkFile(string path)
{
var fileType = await getFileAsync(path);
if (fileType.FileExtension != "None")
{
try
{
if (this.filesMap == null) Console.WriteLine("Map is null");
if (path == null) Console.WriteLine("path is null");
if (fileType == null) Console.WriteLine("type is null");
this.filesMap.Add(path, fileType);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
}
На выборке из 20000 файлов один раз из пяти запусков программы выпадает NullReferenceException при добавлении элемента в дикшинари filesMap.Add, в самом начале работы программы, когда размер мапы два - три элемента. Спотыкается каждый раз на разных файлах.
Все три переменные, которые содержатся в этом коде (path, fileType, filesMap) в момент ошибки содержат какое-то значение, я даже вот эти врайтлайны поставил, чтобы убедиться что не сошёл с ума. Они ничего в консоль не выводят.
Ещё, трай кетч не обрабатывает ошибку автоматически, и студия останавливает работу программы. Если продолжить, то exception из кетча выведется в консоль, и следом будет вторая такая же ошибка. Дальше до конца программа работает нормально. Ошибки случаются только по две, всегда по две. Или не случается ни одной.
Ощущение, будто в dictionary.Add() что-то происходит.
Весь код лежит тут:
https://github.com/osija/ImgExtractor/blob/master/...
Картинку с ошибкой прилагаю:
Спасибо!