Udostępnij za pośrednictwem


Obsługa wyjątków międzyoperacyjności COM

Kod zarządzany i niezarządzany może współdziałać ze sobą w celu obsługi wyjątków. Jeśli metoda zgłasza wyjątek w kodzie zarządzanym, środowisko uruchomieniowe języka wspólnego może przekazać hrESULT do obiektu COM. Jeśli metoda nie powiedzie się w kodzie niezarządzanym, zwracając błąd HRESULT, środowisko uruchomieniowe zgłasza wyjątek, który może zostać przechwycony przez kod zarządzany.

Środowisko uruchomieniowe automatycznie mapuje hrESULT z modelu COM na bardziej szczegółowe wyjątki. Na przykład E_ACCESSDENIED staje się UnauthorizedAccessException, E_OUTOFMEMORY staje się OutOfMemoryExceptionitd.

Jeśli hrESULT jest wynikiem niestandardowym lub jeśli nie jest nieznany środowisku uruchomieniowemu, środowisko uruchomieniowe przekazuje ogólny COMException element do klienta. Właściwość ErrorCode wyrażenia COMException zawiera wartość HRESULT.

Praca z funkcją IErrorInfo

Po przekazaniu błędu z modelu COM do kodu zarządzanego środowisko uruchomieniowe wypełnia obiekt wyjątku informacjami o błędzie. Obiekty COM, które obsługują IErrorInfo i zwracają HRESULTS, dostarczają te informacje do wyjątków kodu zarządzanego. Na przykład środowisko uruchomieniowe mapuje opis z błędu COM na właściwość wyjątku Message . Jeśli hrESULT nie zawiera dodatkowych informacji o błędzie, środowisko uruchomieniowe wypełnia wiele właściwości wyjątku wartościami domyślnymi.

Jeśli metoda nie powiedzie się w kodzie niezarządzanym, można przekazać wyjątek do segmentu kodu zarządzanego. Temat HRESULTS i Wyjątki zawiera tabelę przedstawiającą sposób mapowania HRESULTS na obiekty wyjątków środowiska uruchomieniowego.

Zobacz też