System.Exception.Data-Eigenschaft
Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.
Verwenden Sie das System.Collections.IDictionary von der Data Eigenschaft zurückgegebene Objekt, um zusätzliche Informationen zu speichern und abzurufen, die für die Ausnahme relevant sind. Die Informationen sind in Form einer beliebigen Anzahl von benutzerdefinierten Schlüssel-Wert-Paaren vorhanden. Die Schlüsselkomponente jedes Schlüssel-Wert-Paars ist in der Regel eine identifizierende Zeichenfolge, während die Wertkomponente des Paares ein beliebiger Objekttyp sein kann.
Sicherheit von Schlüssel-Wert-Paaren
Die Schlüssel-Wert-Paare, die in der von der Data Eigenschaft zurückgegebenen Auflistung gespeichert sind, sind nicht sicher. Wenn Ihre Anwendung eine geschachtelte Reihe von Routinen aufruft und jede Routine Ausnahmehandler enthält, enthält der resultierende Aufrufstapel eine Hierarchie dieser Ausnahmehandler. Wenn eine Routine auf niedrigerer Ebene eine Ausnahme auslöst, kann jeder Ausnahmehandler der oberen Ebene in der Aufrufstapelhierarchie die in der Auflistung gespeicherten Schlüssel-Wert-Paare durch einen anderen Ausnahmehandler lesen und/oder ändern. Dies bedeutet, dass Sie sicherstellen müssen, dass die Informationen in den Schlüssel-Wert-Paaren nicht vertraulich sind und dass Ihre Anwendung ordnungsgemäß ausgeführt wird, wenn die Informationen in den Schlüssel-Wert-Paaren beschädigt sind.
Schlüsselkonflikte
Ein Schlüsselkonflikt tritt auf, wenn unterschiedliche Ausnahmehandler denselben Schlüssel für den Zugriff auf ein Schlüssel-Wert-Paar angeben. Achten Sie beim Entwickeln ihrer Anwendung darauf, dass die Folge eines Schlüsselkonflikts darin besteht, dass Ausnahmehandler auf niedrigerer Ebene versehentlich mit Ausnahmehandlern höherer Ebene kommunizieren können, und diese Kommunikation kann subtile Programmfehler verursachen. Wenn Sie jedoch vorsichtig sind, können Sie schlüsselkonflikte verwenden, um Ihre Anwendung zu verbessern.
Vermeiden von Schlüsselkonflikten
Vermeiden Sie Schlüsselkonflikte, indem Sie eine Benennungskonvention verwenden, um eindeutige Schlüssel für Schlüssel-Wert-Paare zu generieren. Eine Benennungskonvention kann z. B. einen Schlüssel liefern, der aus dem durch Punkt getrennten Namen Ihrer Anwendung, der Methode, die ergänzende Informationen für das Paar und einen eindeutigen Bezeichner enthält.
Angenommen, zwei Anwendungen mit dem Namen "Produkte" und "Lieferanten" haben jeweils eine Methode namens "Sales". Die Vertriebsmethode in der Anwendung "Produkte" stellt die Identifikationsnummer (Lagerhaltungseinheit oder SKU) eines Produkts bereit. Die Vertriebsmethode in der Lieferantenanwendung stellt die Identifikationsnummer oder SID eines Lieferanten bereit. Folglich liefert die Benennungskonvention für dieses Beispiel die Schlüssel "Products.Sales.SKU" und "Suppliers.Sales.SID".
Exploit-Schlüsselkonflikte
Exploit key conflicts by using the presence of one or more special, prearranged keys to control processing. Angenommen, in einem Szenario fängt der Ausnahmehandler der höchsten Ebene in der Aufrufstapelhierarchie alle Ausnahmen ab, die von Ausnahmehandlern auf niedrigerer Ebene ausgelöst werden. Wenn ein Schlüssel-Wert-Paar mit einem speziellen Schlüssel vorhanden ist, formatiert der Ausnahmehandler auf hoher Ebene die neu Standard Ing-Schlüssel/Wert-Paare im IDictionary Objekt auf eine nicht standardmäßige Weise. Andernfalls werden die erneuten Standard Schlüssel-Wert-Paare normal formatiert.
Angenommen, in einem anderen Szenario fängt der Ausnahmehandler auf jeder Ebene der Aufrufstapelhierarchie die Ausnahme ab, die vom nächsten Ausnahmehandler auf niedrigerer Ebene ausgelöst wird. Darüber hinaus weiß jeder Ausnahmehandler, dass die von der Data Eigenschaft zurückgegebene Auflistung eine Reihe von Schlüssel-Wert-Paaren enthält, auf die mit einem vordefinierten Satz von Schlüsseln zugegriffen werden kann.
Jeder Ausnahmehandler verwendet den vordefinierten Satz von Schlüsseln, um die Wertkomponente des entsprechenden Schlüssel-Wert-Paars mit Informationen zu aktualisieren, die für diesen Ausnahmehandler eindeutig sind. Nach Abschluss des Updatevorgangs löst der Ausnahmehandler die Ausnahme für den nächsten Ausnahmehandler auf höherer Ebene aus. Schließlich greift der Ausnahmehandler der höchsten Ebene auf die Schlüssel-Wert-Paare zu und zeigt die konsolidierten Updateinformationen aus allen Ausnahmehandlern auf niedrigerer Ebene an.