VB.NET KeyNotFoundException от String()

Я обновляю старый код для использования объектов SortedList(Of String, Integer), и функция самого низкого уровня внезапно начала выдавать ошибки. Ошибка "KeyNotFoundException" выдается, когда я начинаю перечислять через проанализированную строку. Код следующим образом:



    Public Function GetFileToolList(ByVal EIAFilePath As String) As SortedList(Of String, Integer)
        'Gets a full list of tools being used (and reused) in a GCode program
        Dim tools As New SortedList(Of String, Integer)
        Dim words() As String
        For Each line As String In IO.File.ReadAllLines(EIAFilePath)
            'Determine if line contains M6
            If line.ToUpper.Contains("T") Then
                If line.Contains("M06") Or line.Contains("M6") Then
                    'If line ends with M06(M6) or contains M06(M6) then parse string to extract tool number
                    '   If line contains M06(M6) then parse to second tool number after M-Code
                    '       Example: T120 M06 T121
                    '       Changes from T120 to T121
                    words = line.Split(" ")
                    If Not IsNothing(words) Then

'THE FOLLOWING LINE THROWS KeyNotFoundException

                        For i = 0 To words.Length - 1 Step 1
                            If words(i).ToUpper.StartsWith("T") Then
                                If Not (i + 1) >= words.Length Then
                                    If words(i + 1).ToUpper.Contains("M06") Or words(i + 1).ToUpper.Contains("M6") Then

'START OF UPDATED CODE**********************
                                        If IsNothing(tools) Then
                                            tools.Add(words(i).Remove(0, 1), 1)
                                        Else
                                            If Not tools.ContainsKey(words(i).Remove(0,1)) Then
                                                tools.Add(words(i).Remove(0, 1), 1)
                                            Else
                                                tools(words(i).Remove(0, 1)) += 1
                                            End If
                                        End If
'END OF UPDATED CODE************************
                                        Continue For
                                    End If
                                End If
                            End If
                        Next
                    End If
                End If
            End If
        Next
        Return tools
    End Function

Все темы, которые я видел относительно этой ошибки, относятся к объектам Dictionary. Наиболее близким у меня является объект SortedList 'tools', но исключение выдается в массиве String. Итак, что может вызвать это исключение и бонусные баллы, если вы можете объяснить, почему исключение возникает при перечислении "слов". Заранее спасибо!

0 ответов

Другие вопросы по тегам