KeyNotFoundException
KeyNotFoundException бросает индексатор
Dictionary<TKey, TValue>, если ключ
не найден. Метод TryGetValue вместо
исключения возвращает false - см.
TryGetValue.
Перехват оформляют через
catch.
Синтаксис
var map = new Dictionary<string, int>();
int val = map["abcde"];
Пример
Давайте запросим отсутствующий ключ и поймаем исключение:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
try
{
var map = new Dictionary<string, int>();
map["a"] = 1;
int res = map["abcde"];
}
catch (KeyNotFoundException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Пример
Давайте прочитаем существующий ключ без ошибки:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var map = new Dictionary<string, int>();
map["abcde"] = 5;
try
{
Console.WriteLine(map["abcde"]);
}
catch (KeyNotFoundException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
5
Пример
Давайте проверим ключ через ContainsKey
перед чтением:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var map = new Dictionary<string, int>();
string key = "abcde";
if (map.ContainsKey(key))
{
Console.WriteLine(map[key]);
}
else
{
Console.WriteLine("missing");
}
}
}
Результат выполнения кода:
"missing"
Смотрите также
-
метод
TryGetValue,
который не бросает исключение -
IndexOutOfRangeException,
когда индекс мимо массива -
ArgumentOutOfRangeException,
когда аргумент метода вне диапазона -
блок
catch,
которым ловят отсутствие ключа