NotImplementedException Class
TOC
Collapse the table of content
Expand the table of content

NotImplementedException Class

 

The exception that is thrown when a requested method or operation is not implemented.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

System.Object
  System.Exception
    System.SystemException
      System.NotImplementedException

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class NotImplementedException : SystemException

NameDescription
System_CAPS_pubmethodNotImplementedException()

Initializes a new instance of the NotImplementedException class with default properties.

System_CAPS_protmethodNotImplementedException(SerializationInfo, StreamingContext)

Initializes a new instance of the NotImplementedException class with serialized data.

System_CAPS_pubmethodNotImplementedException(String)

Initializes a new instance of the NotImplementedException class with a specified error message.

System_CAPS_pubmethodNotImplementedException(String, Exception)

Initializes a new instance of the NotImplementedException class with a specified error message and a reference to the inner exception that is the cause of this exception.

NameDescription
System_CAPS_pubpropertyData

Gets a collection of key/value pairs that provide additional user-defined information about the exception.(Inherited from Exception.)

System_CAPS_pubpropertyHelpLink

Gets or sets a link to the help file associated with this exception.(Inherited from Exception.)

System_CAPS_pubpropertyHResult

Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.(Inherited from Exception.)

System_CAPS_pubpropertyInnerException

Gets the Exception instance that caused the current exception.(Inherited from Exception.)

System_CAPS_pubpropertyMessage

Gets a message that describes the current exception.(Inherited from Exception.)

System_CAPS_pubpropertySource

Gets or sets the name of the application or the object that causes the error.(Inherited from Exception.)

System_CAPS_pubpropertyStackTrace

Gets a string representation of the immediate frames on the call stack.(Inherited from Exception.)

System_CAPS_pubpropertyTargetSite

Gets the method that throws the current exception.(Inherited from Exception.)

NameDescription
System_CAPS_pubmethodEquals(Object)

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_protmethodFinalize()

Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)

System_CAPS_pubmethodGetBaseException()

When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.(Inherited from Exception.)

System_CAPS_pubmethodGetHashCode()

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

When overridden in a derived class, sets the SerializationInfo with information about the exception.(Inherited from Exception.)

System_CAPS_pubmethodGetType()

Gets the runtime type of the current instance.(Inherited from Exception.)

System_CAPS_protmethodMemberwiseClone()

Creates a shallow copy of the current Object.(Inherited from Object.)

System_CAPS_pubmethodToString()

Creates and returns a string representation of the current exception.(Inherited from Exception.)

NameDescription
System_CAPS_proteventSerializeObjectState

Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.(Inherited from Exception.)

The NotImplementedException exception is thrown when a particular method, get accessor, or set accessor is present as a member of a type but is not implemented.

NotImplementedException uses the default Object.Equals implementation, which supports reference equality. For a list of initial values for an instance of NotImplementedException, see the NotImplementedException constructors.

You might choose to throw a NotImplementedException exception in properties or methods in your own types in the following scenarios:

  • You've designed a type in which you want to include a particular member as part of its public interface, but intend to provide the implementation in a later version. In this case, you can throw a NotImplementedException exception for versions on which the functionality is not implemented, and provide an implementation for later versions.

  • You've designed a type with one or more members that are available on some platforms or in some versions but not on others. In this case, you can throw a NotImplementedException exception on platforms on which the functionality is not supported.

  • You're creating an abstract base class with some members for which you want to provide no implementation but expect derived class to provide the implementation when they override the member. In this case, your member can throw a In this case, you can throw a NotImplementedException exception.

  • You've inherited from an abstract class that requires that you override a number of methods. However, you're only prepared to provide an implementation for a subset of these. For the others, you can choose to throw a NotImplementedException exception for methods for which an implementation is possible.

The NotImplementedException exception indicates that the method or property that you are attempting to invoke has no implementation and therefore provides no functionality. As a result, you should not handle this error in a try/catch block. Instead, you should do either of the following:

Remove the member you're trying to invoke

This is the most common outcome. Unless you're using invoking a member in a third-party library or the .NET Framework Class Library and the documentation indicates that the method is supported on some versions or platforms but not on others, you should simply eliminate the member invocation.

Conditionally invoke the member if it's supported starting with a particular library version or on a particular platform.

If you know that a particular property or method of a type implemented in a library throws an exception in earlier versions but is implemented in later versions or other platforms, and your app is likely to support multiple versions of the library or run on multiple platforms, you can use conditional logic to determine whether to provide alternate functionality or invoke the library member.

For example, the following library implements a version 1.0 of a StringLibrary class whose GetEndOfLineCharacter method throws a NotImplementedException exception.

namespace Utilities
{
   public class StringLibrary
   {
      public static Version { get; } = new Version("1.0");

      public static String GetEndOfLineCharacter()
      {
         throw new NotSupportedException("This functionality will be provided in a later version.");
      }
   }
}

As of version 2.0, however, the method is implemented.

namespace Utilities
{
   public class StringLibrary
   {
      public static Version { get; } = new Version("2.0");

      public static String GetEndOfLineCharacter()
      {
         return Environment.Newline;
      }
   }
}

You can then check the version of the library and, if it is two or greater, call the GetEndOfLineCharacter method:

using System;
using Utilities;

class Example
{
   public static void Main()
   {
      string eol = "";
      if (StringLibrary.Version.Major >= 2)
         eol = StringLibrary.GetendOfLineCharacter();
      else
         eol = "\n";

      Console.Write("The first line." + eol);
      Console.Write("The second line." + eol);
   }
}

Note that in checking for the version, you should never do an exact comparison. Since the method is implemented starting in version 2.0, you want to invoke the method if your app is using any version of the library from 2.0 on. If it is using any version earlier than 2.0, you do not want to invoke the method.

The .NET Framework also includes a NotSupportedException exception type that indicates that no implementation exists for a particular member of a type. However, the two exceptions indicate slightly different exception conditions.

A NotImplementedException is thrown if a developer either intends to implement functionality at a later time or has chosen not to implement required functionality (such as a method required by an abstract base class).

A NotSupportedException exception is thrown if the implementation is not possible or is nonsensical. For example, the Convert.ToInt32(DateTime) method throws a NotSupportedException exception because no meaningful conversion between a date and time and a 32-bit signed integer exists. The method must be present in this case because the Convert class implements the IConvertible interface.

The following example throws this exception for a method that has not been developed.

static void Main(string[] args)
{
    try
    {
        FutureFeature();
    }
    catch (NotImplementedException notImp)
    {
        Console.WriteLine(notImp.Message);
    }
}

static void FutureFeature()
{
    // Not developed yet.
    throw new NotImplementedException();
}

Universal Windows Platform
Available since 4.5
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
Show:
© 2016 Microsoft