Classe System.NotImplementedException

Este artigo fornece observações complementares à documentação de referência para essa API.

A exceção NotImplementedException é gerada quando um determinado método, acessador get ou acessador set está presente como membro de um tipo, mas não é implementado.

NotImplementedException usa a implementação Object.Equals padrão, que oferece suporte à igualdade de referência. Para obter uma lista de valores de propriedade para uma instância do NotImplementedException, consulte os construtores NotImplementedException.

Gerar a exceção

Você pode optar por gerar uma exceção NotImplementedException em propriedades ou métodos em seus próprios tipos quando esse membro ainda estiver em desenvolvimento e só for implementado no código de produção posteriormente. Em outras palavras, uma exceção NotImplementedException deve ser sinônimo de "em desenvolvimento".

Gerar a exceção

A exceção NotImplementedException indica que o método ou a propriedade que você está tentando invocar não tem implementação e, portanto, não fornece nenhuma funcionalidade. Como resultado, você não deve gerar esse erro em um bloco try/catch. Em vez disso, você deve remover a invocação de membro do seu código. Você pode incluir uma chamada para o membro quando ela for implementada na versão de produção de uma biblioteca.

Em alguns casos, uma exceção NotImplementedException pode não ser usada para indicar a funcionalidade que ainda está em desenvolvimento em uma biblioteca de pré-produção. No entanto, isso ainda indica que a funcionalidade não está disponível e você deve remover a invocação de membro do seu código.

NotImplementedException e outros tipos de exceção

O .NET também inclui dois outros tipos de exceção NotSupportedException e PlatformNotSupportedException, que indicam que não existe implementação para um membro específico de um tipo. Você deve gerar um desses em vez de uma exceção NotImplementedException sob as seguintes condições:

  • Gere uma exceção PlatformNotSupportedException em plataformas nas quais a funcionalidade não é suportada se você tiver criado um tipo com um ou mais membros que estão disponíveis em algumas plataformas ou versões, mas não em outras.

  • Gere uma exceção NotSupportedException se a implementação de um membro da interface ou uma substituição de um método de classe base abstrato não for possível.

    Por exemplo, o método Convert.ToInt32(DateTime) gera uma exceção NotSupportedException porque não existe nenhuma conversão significativa entre uma data e hora e um inteiro assinado de 32 bits. O método deve estar presente nesse caso porque a classe Convert implementa a interface IConvertible.

Você também deve gerar uma exceção NotSupportedException se tiver implementado uma classe base abstrata e adicionar um novo membro a ela que deve ser substituído por classes derivadas. Nesse caso, tornar o membro abstrato faz com que as subclasses existentes falhem ao carregar.