次の方法で共有


System.NotImplementedException クラス

この記事では、この API のリファレンス ドキュメントに補足的な解説を提供します。

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

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

例外をスローする

独自の型のプロパティまたはメソッドで NotImplementedException 例外をスローすることを選択できるのは、そのメンバーがまだ開発中であり、後で実稼働コードに実装される場合のみです。 言い換えると、 NotImplementedException 例外は "まだ開発中" と同義である必要があります。

例外を処理する

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

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

NotImplementedException とその他の例外の種類

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

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

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

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

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