Обновлено, чтобы сделать перечисление не аргументом метода...
Вопрос
Проблемы такого типа часто возникают при использовании перечислений в операторах переключения. В примере кода разработчик учел все страны, которые программа использует в данный момент, но если в перечисление Country добавляется другая страна, должно быть выдано исключение. Мой вопрос: какой тип исключения следует создавать?
Пример кода:
Код: Выделить всё
enum Country
{
UnitedStates, Mexico,
}
public string GetCallingCode(Guid countryId){
var country = GetCountry(countryId);
switch (country)
{
case Country.UnitedStates:
return "1";
break;
case Country.Mexico:
return "52";
break;
default:
// What to throw here
break;
}
}
- NotImplemented, Исключение, которое выдается, когда запрошенный метод или операция не реализована.
- NotSupported Существуют методы, которые не поддерживаются в базовом классе, при этом ожидается, что эти методы будут вместо этого быть реализовано в производных классах. Производный класс может реализовывать только подмножество методов базового класса и выдавать исключение NotSupportedException для неподдерживаемых методов.
Для сценариев, в которых иногда объект может выполнить запрошенную операцию, и состояние объекта определяет, может ли операция быть выполнена, см. InvalidOperationException. - InvalidOperation используется в случаях, когда сбой при вызове метода вызван причинами, отличными от недопустимых. аргументы.
Источник: https://stackoverflow.com/questions/129 ... into-a-swi