System.NotImplementedException クラス

この記事は、この API のリファレンス ドキュメントの補足説明です。

NotImplementedException 例外は、特定のメソッド、get アクセサー、または set アクセサーが型のメンバーとして存在するが、実装されていない場合にスローされます。

NotImplementedException は、参照の等価性をサポートする既定の Object.Equals の実装を使用します。 NotImplementedException のインスタンスの初期値の一覧については、NotImplementedException コンストラクターを参照してください。

例外をスローする

独自の型のプロパティまたはメソッドがまだ開発中であり、後で実稼働コードでのみ実装される場合は、そのメンバーで NotImplementedException 例外をスローすることが考えられます。 つまり、NotImplementedException 例外は "まだ開発中" と同じ意味になります。

例外を処理する

NotImplementedException 例外は、呼び出そうとしているメソッドまたはプロパティが実装されていないため、機能が提供されないことを示します。 そのため、try/catch ブロック内ではこのエラーを処理しないようにする必要があります。 代わりに、コードからメンバー呼び出しを削除する必要があります。 メンバーがライブラリの実稼働バージョンに実装されたときに、その呼び出しを含めることができます。

場合によっては、実稼働前ライブラリでまだ開発中の機能を示すために NotImplementedException 例外が使用されているのではないことがあります。 ただし、それでもこれは機能が使用できないことを示しているため、コードからメンバー呼び出しを削除する必要があります。

NotImplementedException とその他の例外の種類

.NET には、型の特定のメンバーに対して実装が存在しないことを示す他の 2 つの例外の種類である NotSupportedExceptionPlatformNotSupportedException も含まれています。 次の条件下では、NotImplementedException 例外ではなく、これらのいずれかをスローする必要があります。

  • 一部のプラットフォームまたはバージョンでは使用できるが、他では使用できない 1 つ以上のメンバーを持つ型を設計した場合、機能がサポートされていないプラットフォームでは PlatformNotSupportedException 例外をスローします。

  • 抽象基底クラス メソッドのインターフェイス メンバーまたはオーバーライドの実装が不可能な場合は、NotSupportedException 例外をスローします。

    たとえば、日時と 32 ビット符号付き整数の間には意味のある変換が存在しないため、Convert.ToInt32(DateTime) メソッドは NotSupportedException 例外をスローします。 この場合は、Convert クラスが IConvertible インターフェイスを実装するため、メソッドが存在する必要があります。

抽象基底クラスを実装し、派生クラスによってオーバーライドする必要がある新しいメンバーを追加した場合も、NotSupportedException 例外をスローする必要があります。 その場合、メンバーを抽象化すると、既存のサブクラスの読み込みに失敗します。