Zpracování výjimek vzájemné spolupráce COM

Spravovaný a nespravovaný kód může spolupracovat na zpracování výjimek. Pokud metoda vyvolá výjimku ve spravovaném kódu, common language runtime může předat HRESULT objektu COM. Pokud metoda selže v nespravovaném kódu vrácením chyby HRESULT, modul runtime vyvolá výjimku, kterou může zachytit spravovaný kód.

Modul runtime automaticky mapuje HRESULT z zprostředkovatele komunikace modelu COM na konkrétnější výjimky. Například E_ACCESSDENIED se stane UnauthorizedAccessException, E_OUTOFMEMORY se stane OutOfMemoryExceptionatd.

Pokud je HRESULT vlastní výsledek nebo pokud je pro modul runtime neznámý, modul runtime předá klientovi obecný COMException výsledek. ErrorCode vlastnost COMException obsahuje HRESULT hodnotu.

Práce s IErrorInfo

Při předání chyby z modelu COM do spravovaného kódu modul runtime naplní objekt výjimky informacemi o chybě. Objekty MODELU COM, které podporují IErrorInfo a vrací HRESULTS, poskytují tyto informace výjimekm spravovaného kódu. Modul runtime například mapuje popis z chyby modelu COM na vlastnost výjimky Message . Pokud HRESULT neposkytuje žádné další informace o chybě, modul runtime vyplní mnoho vlastností výjimky výchozími hodnotami.

Pokud metoda selže v nespravovaném kódu, může být výjimka předána do spravovaného segmentu kódu. Téma HRESULTS a Výjimky obsahuje tabulku, která ukazuje, jak HRESULTS mapuje na objekty výjimek modulu runtime.

Viz také