Какой тип исключения следует выдавать, когда неизвестное значение передается в оператор переключения?C#

Место общения программистов C#
Ответить
Гость
 Какой тип исключения следует выдавать, когда неизвестное значение передается в оператор переключения?

Сообщение Гость »

Изменить 1

Обновлено, чтобы сделать перечисление не аргументом метода...

Вопрос

Проблемы такого типа часто возникают при использовании перечислений в операторах переключения. В примере кода разработчик учел все страны, которые программа использует в данный момент, но если в перечисление 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»