System.Exception.Data-eigenschap

Opmerking

In dit artikel vindt u aanvullende opmerkingen in de referentiedocumentatie voor deze API.

Gebruik het System.Collections.IDictionary object dat door de Data eigenschap wordt geretourneerd om aanvullende informatie op te slaan en op te halen die relevant is voor de uitzondering. De informatie heeft de vorm van een willekeurig aantal door de gebruiker gedefinieerde sleutel-/waardeparen. Het belangrijkste onderdeel van elk sleutel-/waardepaar is doorgaans een identificatietekenreeks, terwijl het waardeonderdeel van het paar elk type object kan zijn.

Beveiliging van sleutel-waardepaar

De sleutel-waardeparen die zijn opgeslagen in de verzameling die door de Data-eigenschap worden geretourneerd, zijn niet veilig. Als uw toepassing een geneste reeks routines aanroept en elke routine uitzonderingshandlers bevat, bevat de resulterende aanroepstack een hiërarchie van deze uitzonderingshandlers. Als een routine op lager niveau een uitzondering genereert, kan elke uitzonderingshandler op het hoogste niveau in de aanroepstackhiërarchie de sleutel-/waardeparen lezen en/of wijzigen die zijn opgeslagen in de verzameling door een andere uitzonderingshandler. Dit betekent dat u moet garanderen dat de informatie in de sleutel-/waardeparen niet vertrouwelijk is en dat uw toepassing correct werkt als de informatie in de sleutel-/waardeparen beschadigd is.

Belangrijke conflicten

Er treedt een sleutelconflict op wanneer verschillende uitzonderingshandlers dezelfde sleutel opgeven voor toegang tot een sleutel/waardepaar. Wees voorzichtig bij het ontwikkelen van uw toepassing omdat het gevolg van een sleutelconflict is dat uitzonderingshandlers op een lager niveau per ongeluk kunnen communiceren met uitzonderingshandlers op een hoger niveau en deze communicatie kan leiden tot subtiele programmafouten. Als u echter voorzichtig bent, kunt u belangrijke conflicten gebruiken om uw toepassing te verbeteren.

Sleutelconflicten voorkomen

Vermijd sleutelconflicten door een naamconventie te gebruiken om unieke sleutels te genereren voor sleutel-/waardeparen. Een naamconventie kan bijvoorbeeld een sleutel opleveren die bestaat uit de door perioden gescheiden naam van uw toepassing, de methode die aanvullende informatie biedt voor het paar en een unieke id.

Stel dat twee toepassingen, producten en leveranciers, elk een methode met de naam Sales hebben. De verkoopmethode in de toepassing Producten levert het identificatienummer (de voorraadeenheid of SKU) van een product. De verkoopmethode in de toepassing Leveranciers levert het identificatienummer of de SID van een leverancier. Daarom levert de naamconventie voor dit voorbeeld de sleutels 'Products.Sales.SKU' en 'Suppliers.Sales.SID' op.

Sleutelconflicten misbruiken

Misbruik van sleutelconflicten door gebruik te maken van de aanwezigheid van een of meer speciale, vooraf gerangschikte sleutels om de verwerking te beheren. Stel dat in één scenario de fouthandler op het hoogste niveau in de aanroepstackhiërarchie alle uitzonderingen opvangt die worden opgeworpen door fouthandlers op lager niveau. Als er een sleutel-/waardepaar met een speciale sleutel bestaat, worden met de uitzonderingshandler op hoog niveau de resterende sleutel-/waardeparen in het IDictionary object op een niet-standaard manier opgemaakt. Anders worden de resterende sleutel-/waardeparen op een normale manier opgemaakt.

Stel nu dat in een ander scenario de uitzonderingshandler op elk niveau van de aanroepstackhiërarchie de uitzondering onderschept die wordt gegenereerd door de volgende uitzonderingshandler op lager niveau. Bovendien weet elke uitzonderingshandler dat de verzameling die door de Data eigenschap wordt geretourneerd, een set sleutel-/waardeparen bevat die kunnen worden geopend met een vooraf gerangschikte set sleutels.

Elke uitzonderingshandler gebruikt de vooraf gerangschikte set sleutels om het waardeonderdeel van het bijbehorende sleutel-/waardepaar bij te werken met informatie die uniek is voor die uitzonderingshandler. Nadat het updateproces is voltooid, genereert de uitzonderingshandler de uitzondering naar de volgende uitzonderingshandler op een hoger niveau. Ten slotte heeft de uitzonderingshandler op het hoogste niveau toegang tot de sleutel-/waardeparen en worden de geconsolideerde updategegevens van alle uitzonderingshandlers op lager niveau weergegeven.