System.Exception.Data 속성

이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.

속성에서 반환된 System.Collections.IDictionary 개체를 Data 사용하여 예외와 관련된 추가 정보를 저장하고 검색합니다. 정보는 임의의 수의 사용자 정의 키/값 쌍 형식입니다. 각 키/값 쌍의 키 구성 요소는 일반적으로 식별 문자열인 반면 쌍의 값 구성 요소는 모든 유형의 개체일 수 있습니다.

키/값 쌍 보안

속성에서 반환된 컬렉션에 저장된 키/값 쌍은 Data 안전하지 않습니다. 애플리케이션이 중첩 된 일련의 루틴을 호출 하는 경우 예외 처리기를 포함 하는 각 루틴 결과 호출 스택의 해당 예외 처리기의 계층 구조를 포함 합니다. 하위 수준 루틴에서 예외를 throw하는 경우 호출 스택 계층 구조의 모든 상위 수준 예외 처리기는 다른 예외 처리기에서 컬렉션에 저장된 키/값 쌍을 읽거나 수정할 수 있습니다. 즉, 키/값 쌍의 정보는 기밀 및 애플리케이션의 키/값 쌍에서 정보를 손상 된 경우 제대로 작동 되도록 해야 합니다.

주요 충돌

키 충돌은 다른 예외 처리기가 키/값 쌍에 액세스하기 위해 동일한 키를 지정하는 경우에 발생합니다. 키 충돌의 결과 하위 수준의 예외 처리기 더 높은 수준의 예외 처리기를 사용 하 여 실수로 통신할 수 있고이 통신에는 미묘한 프로그램 오류가 발생할 수 있습니다 되었기 때문에 애플리케이션을 개발 하는 경우에 주의 해야 합니다. 그러나 기울인다면 애플리케이션을 강화 하기 위해 키 충돌을 사용할 수 있습니다.

키 충돌 방지

키/값 쌍에 대한 고유 키를 생성하는 명명 규칙을 채택하여 키 충돌을 방지합니다. 예를 들어, 애플리케이션의 마침표로 구분 된 이름으로 구성 된 키, 쌍 및 고유 식별자에 대 한 보충 정보를 제공 하는 메서드 명명 규칙을 생성할 수 있습니다.

두 애플리케이션 제품 및 공급 업체 라는 가정 각각에 Sales 라는 메서드가 있습니다. 제품 애플리케이션에서 Sales 메서드는 제품의 id 번호 (stock keeping unit 또는 SKU)를 제공 합니다. 공급 업체 애플리케이션에서 Sales 메서드 id 번호 또는 공급자의 SID를 제공합니다. 따라서 이 예제의 명명 규칙은 "Products.Sales.SKU" 및 "Suppliers.Sales.SID" 키를 생성합니다.

악용 키 충돌

하나 이상의 특수한 미리 정렬된 키를 사용하여 처리를 제어하여 키 충돌을 악용합니다. 한 시나리오에서 호출 스택 계층 구조의 가장 높은 수준의 예외 처리기가 하위 수준 예외 처리기에서 throw된 모든 예외를 catch한다고 가정합니다. 특수 키가 있는 키/값 쌍이 있는 경우 상위 수준 예외 처리기는 개체의 키/값 쌍 IDictionary 을 비표준 방식으로 다시 기본 형식을 지정합니다. 그렇지 않으면 다시 기본 키/값 쌍의 형식이 일반적인 방식으로 지정됩니다.

이제 다른 시나리오에서는 호출 스택 계층 구조의 각 수준에서 예외 처리기가 다음 하위 수준 예외 처리기에서 throw된 예외를 catch한다고 가정합니다. 또한 각 예외 처리기는 속성에서 반환된 Data 컬렉션에 미리 정렬된 키 집합으로 액세스할 수 있는 키/값 쌍 집합이 포함되어 있음을 알고 있습니다.

각 예외 처리기는 미리 구성된 키 집합을 사용하여 해당 키/값 쌍의 값 구성 요소를 해당 예외 처리기에 고유한 정보로 업데이트합니다. 업데이트 프로세스가 완료되면 예외 처리기가 다음 상위 수준 예외 처리기에 예외를 throw합니다. 마지막으로, 가장 높은 수준의 예외 처리기는 키/값 쌍에 액세스하고 모든 하위 수준 예외 처리기의 통합 업데이트 정보를 표시합니다.