Classe System.NotImplementedException

Questo articolo fornisce osservazioni supplementari alla documentazione di riferimento per questa API.

L'eccezione NotImplementedException viene generata quando un particolare metodo, una funzione di accesso get o una funzione di accesso set è presente come membro di un tipo ma non viene implementato.

NotImplementedException usa l'implementazione predefinita Object.Equals , che supporta l'uguaglianza dei riferimenti. Per un elenco dei valori iniziali per un'istanza di NotImplementedException, vedere i NotImplementedException costruttori.

Generare l'eccezione

È possibile scegliere di generare un'eccezione NotImplementedException nelle proprietà o nei metodi nei propri tipi quando il membro è ancora in fase di sviluppo e verrà implementato solo in un secondo momento nel codice di produzione. In altre parole, un'eccezione NotImplementedException deve essere sinonimo di "ancora in sviluppo".

Gestire l'eccezione

L'eccezione NotImplementedException indica che il metodo o la proprietà che si sta tentando di richiamare non ha implementazione e pertanto non fornisce alcuna funzionalità. Di conseguenza, non è consigliabile gestire questo errore in un try/catch blocco. È invece necessario rimuovere la chiamata del membro dal codice. È possibile includere una chiamata al membro quando viene implementata nella versione di produzione di una libreria.

In alcuni casi, è possibile che non venga usata un'eccezione NotImplementedException per indicare le funzionalità ancora in fase di sviluppo in una libreria di pre-produzione. Tuttavia, ciò indica comunque che la funzionalità non è disponibile ed è necessario rimuovere la chiamata del membro dal codice.

NotImplementedException e altri tipi di eccezione

.NET include anche altri due tipi di eccezione e NotSupportedExceptionPlatformNotSupportedException, che indicano che non esiste alcuna implementazione per un determinato membro di un tipo. È consigliabile generare una di queste eccezioni invece di un'eccezione NotImplementedException nelle condizioni seguenti:

  • Generare un'eccezione PlatformNotSupportedException sulle piattaforme in cui la funzionalità non è supportata se è stato progettato un tipo con uno o più membri disponibili in alcune piattaforme o versioni, ma non in altri.

  • Generare un'eccezione NotSupportedException se l'implementazione di un membro di interfaccia o di un override a un metodo di classe base astratta non è possibile.

    Ad esempio, il Convert.ToInt32(DateTime) metodo genera un'eccezione NotSupportedException perché non esiste alcuna conversione significativa tra una data e un'ora e un intero con segno a 32 bit. Il metodo deve essere presente in questo caso perché la Convert classe implementa l'interfaccia IConvertible .

È anche consigliabile generare un'eccezione NotSupportedException se è stata implementata una classe base astratta e aggiungervi un nuovo membro che deve essere sottoposto a override da classi derivate. In tal caso, se si esegue l'astrazione del membro, le sottoclassi esistenti non riescono a essere caricate.