오류 처리 및 반환 값
VSPackages 및 COM 오류에 대 한 동일한 아키텍처를 사용합니다. SetErrorInfo 및 GetErrorInfo 함수는 Win32 응용 프로그래밍 인터페이스 (API)의 일부입니다. 모든 VSPackage 통합된 개발 환경 (IDE)에서 이러한 세부적인 오류 정보를 기록할 전체 Win32 Api 오류 알림의 받을 때 호출할 수 있습니다. Visual Studio SDK 오류 정보를 관리 하는 interop 어셈블리를 제공 합니다.
Interop 메서드
메서드를 IDE의 편의 제공 SetErrorInfo, Win32 Api를 호출 하는 대신 사용 합니다. 관리 되는 코드 사용에서 SetErrorInfo. 오류 때 HRESULT 오류 메시지를 표시 해야 하는 수준에 도달 (이 종종 개체입니다 구현 하는 IOleCommandTarget 명령 처리기), IDE는 다른 메서드를 사용 ReportErrorInfo, 적절 한 메시지 상자를 표시 합니다. 관리 코드 사용에서의 ReportErrorInfo 메서드.
있는 VSPackage 구현자는 COM 개체를 정상적으로 구현 ISupportErrorInfo. ISupportErrorInfo 인터페이스 보장 세부적인 오류 정보를 호출 체인으로 세로 방향으로 이동할 수 있습니다. 프로세스 또는 스레드 간에 사용할 수 있는 개체를 지원 해야 ISupportErrorInfo 세부적인 오류 정보를 호출자에 게 제대로 마샬링되도록 확인 합니다.
있는 Vspackages에 관련 된 고가 이며 편집기 팩터리, 편집자, 계층을 포함 하 여 IDE를 확장에 관련 된 서비스를 제공 하는 모든 개체는 세부적인 오류 정보를 지원 해야 합니다. 이러한 VSPackage 개체를 구현 하 여 IDE 필요 하지 않습니다 동안 ISupportErrorInfo, 항상 좋습니다.
IDE 오류 정보를 보고 하 고 사용자에 게 표시 됩니다 Visual Studio 때마다는 HRESULT IDE로 전파 됩니다. IDE를 만들기 위한 메커니즘을 수도 있습니다 ErrorInfo 개체입니다.
일반 지침
사용할 수 있는 SetErrorInfo 및 ReportErrorInfo 설정 하 고 내부 사용자 VSPackage 구현 하는 오류를 보고 하는 방법을. 그러나, 일반적으로 하면 Vspackage에서 오류 메시지를 처리 하기 위한 다음이 지침을 따르십시오.
구현 ISupportErrorInfo 를 하면 VSPackage COM 개체입니다.
오류 보고를 호출 하는 메커니즘은 SetErrorInfo 메서드를 구현 하는 개체에서 IOleCommandTarget.
IDE를 통해 사용자에 게 오류를 표시할 수 있는 ReportErrorInfo 메서드.
Ide에서 오류 정보
다음 규칙에서 오류 정보를 처리 하는 나타내는 Visual Studio IDE.
오래 된 오류 정보를 사용자에 게 보고 되지 않습니다 보장 하는 방어 전략 기능으로 해당 호출을 ReportErrorInfo 메서드를 먼저 호출 해야 합니다는 SetErrorInfo 메서드. 전달 null 새 오류 정보를 설정 될 수 있습니다 아무것도 호출 하기 전에 캐시 된 오류 메시지를 취소 합니다.
직접 오류 메시지를 보고 하지 않는 함수를 호출할 수 허용 되지만 SetErrorInfo 메서드는 오류를 반환 하는 경우 HRESULT. 선택을 허용 되는 ErrorInfo 함수 또는 반환 하는 경우 항목에 S_OK. 호출이 오류를 반환 하면이 규칙의 유일한 예외는 HRESULT 에서 어떤 받는 사람이 명시적으로 복구 하거나 안전 하 게 무시할 수 있습니다.
명시적으로 오류를 무시 하는 파티 HRESULT 를 호출 해야 해당 SetErrorInfo 메서드를 사용 S_OK. 그렇지 않은 경우는 ErrorInfo 개체가 사용 될 수도 있는 실수로 다른 당사자가 직접 제공 하지 않고 오류를 생성 하면 ErrorInfo.
오류가 발생 하는 모든 메서드에 HRESULT 를 호출 하는 것이 좋습니다 있는 SetErrorInfo 세부적인 오류 정보를 제공 하는 메서드. 경우는 반환 된 HRESULT 특별 한입니다 FACILITY_ITF 오류, 다음 메서드는 적절 한 제공에 필요한 ErrorInfo개체입니다. 표준 시스템 오류 오류가 반환된 된 경우 (예를 들어, E_OUTOFMEMORY, E_ABORT, E_INVALIDARG, E_UNEXPECTED, 등.) 명시적으로 호출 하지 않고 오류 코드를 반환 하는 것이 적합의 SetErrorInfo 메서드. 오류가 발생 하는 경우는 방어적 코딩 전략으로 HRESULT (시스템 오류)를 포함 하 여 항상 호출 하는 SetErrorInfo 메서드 중 하나를 ErrorInfo 오류를 보다 자세히 설명 하는 또는 null.
통과 해야 하는 다른 호출에 의해 시작 된 오류가 실패 로부터 수신 된 정보를 반환 하는 함수 호출 HRESULT 수정 하지 않고는 ErrorInfo 개체입니다.