KeyNotFoundException
は、キーが存在しない場合に、指定されたキーを持つディクショナリから値を取得しようとしているために発生します。例:
var dictionary = new Dictionary<string, string>();
var val = dictionary["mykey"];
辞書が使用されているすべての場所を見て自分自身を判断できます。そのための一般的なベストプラクティスは、存在しない可能性のある辞書の値を探す場合は、TryGetValue
を使用することです。すべての時間は、より高価な操作であり、不要な例外をキャッチ:
string val;
if(dictionary.TryGetValue("mykey", out val))
{
//The key was found. The value is in val.
}
else
{
//The key was not present.
}
あなたは問題が起こっている場所を正確に決定するために、彼らKeyNotFoundException
のStackTrace
プロパティを見ることができます。すべての例外にはStackTrace
というプロパティがあります。そのため、グローバルエラーハンドラにあった例外の種類を気にする必要はありません。
private void Application_UnhandledException(object sender,
ApplicationUnhandledExceptionEventArgs e)
{
var stackTrace = e.ExceptionObject.StackTrace;
//Log the stackTrace somewhere.
}
それとも、あなたはそれが例外の種類を伝えることができるようにしたい場合:たとえば
private void Application_UnhandledException(object sender,
ApplicationUnhandledExceptionEventArgs e)
{
if (e.ExceptionObject is KeyNotFoundException)
{
//This was a KeyNotFoundException
}
}
スタックトレースを記録して、エラーの原因がわかるようにしてください。 –