Classe System.NotImplementedException

Cet article vous offre des remarques complémentaires à la documentation de référence pour cette API.

L’exception NotImplementedException est levée quand une méthode particulière, un accesseur get ou un accesseur set est présent en tant que membre d’un type, mais n’est pas implémenté.

NotImplementedException utilise l’implémentation par défaut de Object.Equals, qui prend en charge l’égalité des références. Pour obtenir la liste des valeurs initiales pour une instance de NotImplementedException, consultez les constructeurs NotImplementedException.

Lever l’exception

Vous pouvez choisir de lever une NotImplementedException exception dans les propriétés ou méthodes de vos propres types quand le membre est toujours en cours de développement et qu’il ne sera implémenté que plus tard dans le code de production. En d’autres termes, une exception NotImplementedException doit être synonyme de « toujours en cours de développement ».

Gérer l’exception

L’exception NotImplementedException indique que la méthode ou la propriété que vous tentez d’appeler n’a pas d’implémentation et ne fournit donc aucune fonctionnalité. Par conséquent, vous ne devez pas gérer cette erreur dans un bloc try/catch. Au lieu de cela, vous devez supprimer l’appel du membre de votre code. Vous pouvez inclure un appel au membre quand il est implémenté dans la version de production d’une bibliothèque.

Dans certains cas, une exception NotImplementedException ne peut pas être utilisée pour indiquer une fonctionnalité qui est toujours en cours de développement dans une bibliothèque de préproduction. Cependant, ceci indique néanmoins que la fonctionnalité n’est pas disponible, et vous devez supprimer l’appel du membre dans votre code.

NotImplementedException et autres types d’exceptions

.NET inclut également deux autres types d’exception, NotSupportedException et PlatformNotSupportedException, qui indiquent qu’aucune implémentation n’existe pour un membre particulier d’un type. Vous devez lever l’une de ces exceptions au lieu d’une exception NotImplementedException dans les conditions suivantes :

  • Levez une exception PlatformNotSupportedException sur les plateformes sur lesquelles la fonctionnalité n’est pas prise en charge si vous avez conçu un type avec un ou plusieurs membres disponibles sur certaines plateformes ou certaines versions, mais pas sur les autres.

  • Levez une exception NotSupportedException si l’implémentation d’un membre d’interface ou d’un remplacement à une méthode de classe de base abstraite n’est pas possible.

    Par exemple, la méthode Convert.ToInt32(DateTime) lève une exception NotSupportedException, car il n’existe pas de conversion significative entre une date et une heure et un entier signé sur 32 bits. La méthode doit dans ce cas être présente, car la classe Convert implémente l’interface IConvertible.

Vous devez également lever une exception NotSupportedException si vous avez implémenté une classe de base abstraite et que vous y ajoutez un nouveau membre qui doit être remplacé par des classes dérivées. Dans ce cas, rendre le membre abstrait entraîne l’échec du chargement des sous-classes existantes.