ArgumentException: значение не попадает в ожидаемый диапазон.- не в состоянии добавлять строки в структуры данных - PullRequest
0 голосов
/ 03 мая 2019

У меня есть функция для создания графика и добавления некоторых значений к нескольким другим структурам данных, используя StreamReader для чтения в строках из файла .txt.

public static DirectedGraph<string, bool> GetGraph(string fn)
{
    DirectedGraph<string, bool> dg = new DirectedGraph<string, bool>();
    ITrie trie = null;
    List<string> list = new List<string>();

    try
    {
        using (StreamReader sr = new StreamReader(fn))
        {
            string l;
            while((l = sr.ReadLine()) != null)
            {
                dg.AddNode(l);
                trie.Add(l);
                list.Add(l);
                GetEdges(list, trie, dg);
            }

            return dg;
        }

    } catch
    {
        throw new ArgumentException();
    }
}

Я ожидаю, что StreamReader добавит значения чтения в список, trie и узлы на графике.GetEdges() - это функция, которая получает строки из заданного списка и добавляет ребра в структуру данных графа.

1 Ответ

0 голосов
/ 03 мая 2019

Как отметили @JonSkeet и @RufusL, trie создается как null, и, поскольку он никогда не устанавливается на что-либо, он все еще null, когда вызывается trie.Add(l);,Это выдает NullReferenceException, но из-за блока try/catch это исключение перехватывается, его данные игнорируются, и вместо него вместо него выдается ArgumentException со значениями по умолчанию.Я настоятельно рекомендую использовать какой-либо способ создания или получения данных из исходного исключения для целей отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...