Qual é a exceção correta para lançar valores de enumeração não manipulados?
Este é outro caso do meuoutra pergunta sobre casos não tratados com enums que eu era recomendado para fazer uma pergunta separada.
Digamos que temosSomeEnum
e ter uma instrução switch manipulando-a como:
enum SomeEnum
{
One,
Two
}
void someFunc()
{
SomeEnum value = someOtherFunc();
switch(value)
{
case One:
... break;
case Two:
... break;
default:
throw new ??????Exception("Unhandled value: " + value.ToString());
}
}
Como você vê, lidamos com todos os possíveis valores de enumeração, mas ainda mantemos um padrão lançando uma exceção no caso de um novo membro ser adicionado e queremos ter certeza de que estamos cientes da manipulação que está faltando.
Minha pergunta é: qual é a exceção correta em tais circunstâncias em que você deseja notificar que o caminho do código fornecido não foi manipulado / implementado ou nunca deveria ter sido visitado? Nós costumávamos usarNotImplementedException
mas não parece ser o ajuste certo. Nosso próximo candidato éInvalidOperationException
mas o termo não parece certo. Qual é o certo e por quê?