На SO уже есть много вопросов об исключениях, но я не могу найти тот, который отвечает на мой вопрос. Не стесняйтесь указывать мне в направлении другого вопроса, если я пропустил его.
Мой вопрос довольно прост: как другие (C #) разработчики выбирают наиболее подходящий тип исключения для выброса? Ранее я написал следующий код:
if (Enum.IsDefined(enumType, value))
{
return (T)Enum.Parse(enumType, value);
}
else
{
throw new ArgumentException(string.Format("Parameter for value \"{0}\" is not defined in {1}", value, enumType));
}
С тех пор я понял, что бросание InvalidEnumArgumentException
, вероятно, было бы более уместным, если бы я знал о его существовании в то время.
Существует ли авторитетный ресурс, который помогает разработчикам выбирать типы исключений, или это просто вопрос опыта?
Редактировать
Я дал баллы Нолдорину за то, что он дал ряд идей в хорошо продуманном ответе. Очки могли бы достаться любому из вас, на самом деле - спасибо за все предложения.