Sdílet prostřednictvím


System.Exception.Data – vlastnost

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

System.Collections.IDictionary Použijte objekt vrácený Data vlastností k uložení a načtení dodatečných informací relevantních pro výjimku. Informace jsou ve formě libovolného počtu uživatelsky definovaných párů klíč/hodnota. Klíčovou součástí každého páru klíč/hodnota je obvykle identifikační řetězec, zatímco hodnota páru může být libovolný typ objektu.

Zabezpečení páru klíč/hodnota

Páry klíč/hodnota uložené v kolekci vrácené Data vlastností nejsou zabezpečené. Pokud vaše aplikace volá vnořenou řadu rutin a každá rutina obsahuje obslužné rutiny výjimek, výsledný zásobník volání obsahuje hierarchii těchto obslužných rutin výjimek. Pokud rutina nižší úrovně vyvolá výjimku, může jakákoli obslužná rutina výjimky vyšší úrovně v hierarchii zásobníku volání číst a/nebo upravovat páry klíč/hodnota uložené v kolekci jakoukoli jinou obslužnou rutinou výjimek. To znamená, že musíte zaručit, že informace ve dvojicích klíč/hodnota nejsou důvěrné a že aplikace bude fungovat správně, pokud jsou informace ve dvojicích klíč/hodnota poškozené.

Konflikty klíčů

Ke konfliktu klíče dochází v případě, že různé obslužné rutiny výjimek určují stejný klíč pro přístup ke dvojici klíč/hodnota. Při vývoji aplikace buďte opatrní, protože následkem konfliktu klíče je to, že obslužné rutiny výjimek nižší úrovně můžou neúmyslně komunikovat s obslužnými rutinami výjimek vyšší úrovně a tato komunikace může způsobit drobné chyby programu. Pokud ale budete opatrní, můžete k vylepšení aplikace použít klíčové konflikty.

Vyhněte se konfliktům klíčů

Vyhněte se konfliktům klíčů tím, že přijmete konvenci pojmenování pro generování jedinečných klíčů pro páry klíč/hodnota. Například konvence vytváření názvů může přinést klíč, který se skládá z názvu aplikace s oddělovači tečky, metody, která poskytuje doplňující informace pro dvojici a jedinečný identifikátor.

Předpokládejme, že dvě aplikace s názvem Produkty a Dodavatelé mají každou metodu s názvem Sales. Metoda Prodej v aplikaci Produkty poskytuje identifikační číslo (skladové jednotky nebo skladové položky) produktu. Metoda Prodej v aplikaci Dodavatelé poskytuje identifikační číslo (SID) dodavatele. V důsledku toho konvence vytváření názvů pro tento příklad přináší klíče "Products.Sales.SKU" a "Suppliers.Sales.SID".

Konflikty zneužití klíčů

Zneužití konfliktů klíčů pomocí přítomnosti jednoho nebo více speciálních předem připravených klíčů pro řízení zpracování. Předpokládejme, že v jednom scénáři obslužná rutina výjimky nejvyšší úrovně v hierarchii zásobníku volání zachytí všechny výjimky vyvolané obslužnými rutinami výjimek nižší úrovně. Pokud existuje pár klíč/hodnota se speciálním klíčem, obslužná rutina výjimky vysoké úrovně formátuje zbývající páry klíč/hodnota v objektu IDictionary nějakým nestandardním způsobem. Jinak se zbývající páry klíč/hodnota naformátují běžným způsobem.

Teď předpokládejme, že obslužná rutina výjimky na každé úrovni hierarchie zásobníku volání zachytí výjimku vyvolanou další obslužnou rutinou výjimky nižší úrovně. Kromě toho každá obslužná rutina výjimky zná kolekci vrácenou Data vlastností obsahuje sadu párů klíč/hodnota, ke kterým lze získat přístup s předem uspořádanou sadou klíčů.

Každá obslužná rutina výjimky používá předem uspořádanou sadu klíčů k aktualizaci součásti hodnoty odpovídající dvojice klíč/hodnota s informacemi jedinečnými pro obslužnou rutinu výjimky. Po dokončení procesu aktualizace obslužná rutina výjimky vyvolá výjimku na další obslužnou rutinu výjimky vyšší úrovně. Nakonec obslužná rutina výjimky nejvyšší úrovně přistupuje ke dvojicám klíč/hodnota a zobrazí konsolidované informace o aktualizaci ze všech obslužných rutin výjimek nižší úrovně.