KeyNotFoundException について

初級者向けにおさらいします。

目次

この例外エラーの説明

主に、ディクショナリ型変数に登録されたコレクションデータの中に、Key Not Found(指定されたキーを持つ値が見つからなかったことで発生する)Exception です。

事例とその対処方法

例外エラーは、想定外の扱われ方をすると発生して飛んで来ます。それは命令の使い方が間違っていたり、存在しないデータを扱おうとしていたり、アカウント権限を越えたアクセスをしようとしていたり(Windows 側やウェブ側の話だったり)、サービスが動いていないのに連携しようとしたり、製品上の仕様考慮モレだったり、そういう系です。

こうなっている前提のはずだから、こうやろうとしたのに、実際はここがこうなっているからダメじゃん!こういう場合の処理が無いじゃん!みたいなコードになっていませんか?

Dictionary(Of TKey, TValue)

Dim dic As New Dictionary(Of String, Integer) From {
    {"pen", 1},
    {"apple", 2},
    {"pineapple", 3}
}

Dim count As Integer = dic("banana")
System.Collections.Generic.KeyNotFoundException: '指定されたキーはディレクトリ内に存在しませんでした。'

指定したキーが今現在登録されているかどうかのチェックを実施した後で、キー指定するようにします。

If dic.ContainsKey("banana") Then
    Dim count As Integer = dic("banana")
End If