Sunday, December 12, 2010

KeyNotFoundException

В стандартной реализации исключение KeyNotFoundException сообщает что ключ не найден, но почему-то не сообщает какой именно. Исправить ситуацию можно так:

    public class MyDictionary : Dictionary<string, object>
    {

        public new object this[string key]
        {
            get
            {
                object value;
                if (!base.TryGetValue(key, out value))
                    throw new KeyNotFoundException(string.Format("Значение [{0}] не найдено", key));
                else
                    return value;
            }
            set
            {
                base[key] = value;
            }
        }

    }Теперь это исключение можно поймать и сообщить пользователю что-то осмысленное.

No comments: