Уже есть много вопросов о SO об исключениях, но я не могу найти ответ на мой вопрос. Не стесняйтесь указать мне в сторону другого вопроса, если я пропустил его.
Мой вопрос довольно прост: как другие разработчики (С#) приходят к выбору наиболее подходящего типа исключения для броска? Раньше я написал следующий код:
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
, вероятно, было бы более подходящим, если бы я знал о его существовании в то время.
Имеется ли доступный авторитетный ресурс, который помогает разработчикам выбирать типы исключений, или это просто вопрос опыта?
Изменить
Я дал очки Нольдорину за то, что вы предлагали целый ряд идей в хорошо продуманном ответе. Точки могли бы пойти к любому из вас на самом деле - спасибо за все предложения.