Category: компьютеры

Category was added automatically. Read all entries about "компьютеры".

megamind 5

Про выбор типа исключения при неверном значении перечисления

Представим следующий код:

SomeMethod(xxx someArgument)
{
  ...
  switch(someArgument.SomeEnumProperty)
  {
    case xxx:
      ...
    case yyy:
      ...
    default:
      throw new ???????????????? // какой тип?
  }
  ...
}

Т.е. в метод передается некоторый объект, свойство которого (типа Enum) имеет недопустимое для данного метода значение. Такая ситуация может быть, когда метод сознательно допускает только определенные значения перечисления (и не может быть выполнен/не должен вызываться при других значениях); либо когда делается "перестраховка на будущее", т.е. если в будущем добавится новый элемент перечисления, не поддерживаемый данным методом, то метод сразу об этом сообщит с помощью исключения, после чего разработчик сможет либо исправить вызывающий код, либо этот метод, так чтобы он стал поддерживать новое значение перечисления.

Ситуация должна быть понятна, так что вернемся к главному вопросу: какой тип исключения выбрать в такой или в аналогичной ситуации?
Collapse )