В качестве альтернативы ловушке , я бы предложил проверить наличие элемента с помощью ключа с помощью метода Contains
.Например:
if (!rtfColor.Contains(RtfColor.White))
{
rtfColor.Add(RtfColor.White, RtfColorDef.White);
}
Давайте рассмотрим это немного дальше, чтобы проиллюстрировать предложение Джима Б. (поскольку это вводит дополнительных строк для каждого добавления и может быстро стать чрезмерным), мы можем создать простойметод «безопасного добавления элементов», то есть добавления элементов в коллекцию только в том случае, если элемент с определенным ключом еще не существует (вы можете применить более конкретную форму в отношении именования методов, доступа и т. д., но в качестве примера):
private void AddItemToDictionary(HybridDictionary dictionary, object key, object value)
{
if (!dictionary.Contains(key))
{
dictionary.Add(key, value);
}
}
AddItemToDictionary(rtfColor, RtfColor.Black, RtfColorDef.Black);
AddItemToDictionary(rtfColor, RtfColor.White, RtfColorDef.White);
AddItemToDictionary(rtfColor, RtfColor.Red, RtfColorDef.Red);
Это может быть расширено для простого обновления, если это необходимо.
Когда использовать try / catch - это отдельная история, когда использовать try / catch для игнорирования ошибокэто другая жизнь.