Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Den här artikeln innehåller ytterligare kommentarer till referensdokumentationen för det här API:et.
Använd objektet System.Collections.IDictionary som returneras av Data egenskapen för att lagra och hämta kompletterande information som är relevant för undantaget. Informationen är i form av ett godtyckligt antal användardefinierade nyckel/värde-par. Nyckelkomponenten för varje nyckel/värde-par är vanligtvis en identifierande sträng, medan värdekomponenten i paret kan vara vilken typ av objekt som helst.
Nyckel/värde-parsäkerhet
Nyckel/värde-paren som lagras i samlingen som returneras av Data egenskapen är inte säkra. Om ditt program anropar en kapslad serie rutiner och varje rutin innehåller undantagshanterare, innehåller den resulterande anropsstacken en hierarki med dessa undantagshanterare. Om en rutin på lägre nivå utlöser ett undantag kan alla undantagshanterare på den övre nivån i anropsstackens hierarki läsa och/eller ändra nyckel/värde-paren som lagras i samlingen av någon annan undantagshanterare. Det innebär att du måste garantera att informationen i nyckel/värde-paren inte är konfidentiell och att programmet fungerar korrekt om informationen i nyckel/värde-paren är skadad.
Nyckelkonflikter
En nyckelkonflikt uppstår när olika undantagshanterare anger samma nyckel för att få åtkomst till ett nyckel/värde-par. Var försiktig när du utvecklar ditt program eftersom konsekvensen av en nyckelkonflikt är att undantagshanterare på lägre nivå oavsiktligt kan kommunicera med undantagshanterare på högre nivå, och den här kommunikationen kan orsaka subtila programfel. Men om du är försiktig kan du använda nyckelkonflikter för att förbättra ditt program.
Undvik nyckelkonflikter
Undvik nyckelkonflikter genom att använda en namngivningskonvention för att generera unika nycklar för nyckel/värde-par. En namngivningskonvention kan till exempel ge en nyckel som består av det periodavgränsade namnet på ditt program, metoden som tillhandahåller kompletterande information för paret och en unik identifierare.
Anta att två program, med namnet Produkter och leverantörer, var och en har en metod med namnet Försäljning. Metoden Försäljning i programmet Produkter innehåller identifieringsnumret (lagerhållningsenheten eller SKU:n) för en produkt. Metoden Försäljning i leverantörsprogrammet tillhandahåller en leverantörs identifieringsnummer, eller SID. Namngivningskonventionen för det här exemplet ger därför nycklarna "Products.Sales.SKU" och "Suppliers.Sales.SID".
Utnyttja nyckelkonflikter
Utnyttja nyckelkonflikter med hjälp av förekomsten av en eller flera särskilda, fördefinierade nycklar för att styra bearbetningen. Anta att i ett scenario fångar undantagshanteraren på högsta nivå i anropsstackens hierarki alla undantag som genereras av undantagshanterare på lägre nivå. Om det finns ett nyckel/värde-par med en särskild nyckel formaterar undantagshanteraren på hög nivå de återstående nyckel-/värdeparen IDictionary i objektet på något sätt som inte är standard. Annars formateras de återstående nyckel-/värdeparen på något normalt sätt.
Anta nu att undantagshanteraren på varje nivå i anropsstackens hierarki i ett annat scenario fångar undantaget som genereras av nästa undantagshanterare på lägre nivå. Dessutom vet varje undantagshanterare att samlingen som returneras av Data egenskapen innehåller en uppsättning nyckel/värde-par som kan nås med en fördefinierad uppsättning nycklar.
Varje undantagshanterare använder den fördefinierade uppsättningen nycklar för att uppdatera värdekomponenten för motsvarande nyckel/värde-par med information som är unik för undantagshanteraren. När uppdateringsprocessen är klar genererar undantagshanteraren undantaget till nästa undantagshanterare på högre nivå. Slutligen får undantagshanteraren på högsta nivå åtkomst till nyckel/värde-paren och visar den konsoliderade uppdateringsinformationen från alla undantagshanterare på lägre nivå.