System.NotImplementedException – třída

Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.

Výjimka NotImplementedException je vyvolán, když konkrétní metoda, get accessor nebo set accessor je přítomna jako člen typu, ale není implementována.

NotImplementedException používá výchozí Object.Equals implementaci, která podporuje rovnost odkazů. Seznam počátečních hodnot pro instanci NotImplementedExceptionnaleznete v NotImplementedException konstruktorech.

Vyvolání výjimky

Pokud je tento člen stále ve vývoji a bude implementován v produkčním NotImplementedException kódu, můžete se rozhodnout vyvolat výjimku ve vlastnostech nebo metodách ve vašich vlastních typech. Jinými slovy, NotImplementedException výjimka by měla být synonymem pro "stále ve vývoji".

Zpracování výjimky

Výjimka NotImplementedException označuje, že metoda nebo vlastnost, kterou se pokoušíte vyvolat, nemá žádnou implementaci, a proto neposkytuje žádné funkce. V důsledku toho byste tuto chybu neměli zpracovat v try/catch bloku. Místo toho byste měli ze svého kódu odebrat vyvolání člena. Volání člena můžete zahrnout při jeho implementaci v produkční verzi knihovny.

V některých případech NotImplementedException nemusí být výjimka použita k označení funkcí, které jsou stále ve vývoji v předprodukční knihovně. To ale stále znamená, že funkce není k dispozici a měli byste ze svého kódu odebrat vyvolání člena.

NotImplementedException a další typy výjimek

.NET obsahuje také dva další typy výjimek a NotSupportedExceptionPlatformNotSupportedException, které označují, že pro konkrétního člena typu neexistuje žádná implementace. Jednu z těchto možností byste měli vyvolat místo NotImplementedException výjimky za následujících podmínek:

  • PlatformNotSupportedException Vyvolání výjimky na platformách, na kterých se funkce nepodporuje, pokud jste navrhli typ s jedním nebo více členy, které jsou dostupné na některých platformách nebo verzích, ale ne u jiných.

  • NotSupportedException Vyvolá výjimku, pokud implementace člena rozhraní nebo přepsání abstraktní základní třídy metoda není možné.

    Metoda například vyvolá NotSupportedException výjimku, Convert.ToInt32(DateTime) protože neexistuje smysluplný převod mezi datem a časem a 32bitovým znaménkem. V tomto případě musí být přítomna metoda, protože Convert třída implementuje IConvertible rozhraní.

Pokud jste implementovali abstraktní základní třídu a přidali do ní nový člen, který musí být přepsán odvozenými třídami, měli byste také vyvolat NotSupportedException výjimku. V takovém případě, aby člen abstraktní způsobí selhání načtení existujících podtříd.