Sdílet prostřednictvím


Zpracování výjimek zprostředkovatele komunikace s objekty COM

Spravovaný a nespravovaný kód může spolupracovat za účelem zpracování výjimek. Pokud metoda vyvolá výjimku ve spravovaném kódu, modul CLR (Common Language Runtime) může předat HRESULT objektu COM. Jestliže metoda selže v nespravovaném kódu vrácením selhání HRESULT, modul runtime vyvolá výjimku, která může být zachycena spravovaným kódem.

Modul runtime automaticky mapuje hodnotu HRESULT ze zprostředkovatele komunikace s objekty COM pro více specifické výjimky. Například E_ACCESSDENIED se stane UnauthorizedAccessException E_OUTOFMEMORY se stane OutOfMemoryException atd.

Pokud hodnota HRESULT je vlastní výsledek nebo pokud je neznáma modulu runtime, modul runtime předá klientovi obecnou COMException. Vlastnost ErrorCode od COMException obsahuje hodnotu HRESULT.

Úplné informace o zprostředkovateli komunikace s objekty COM naleznete v tématu Advanced COM Interoperability.

Práce s IErrorInfo

Když je chyba předána z COM do spravovaného kódu, modul runtime naplní objekt výjimky informacemi o chybě. Objekty COM, které podporují IErrorInfo a vracejí HRESULTS, poskytují tyto informace výjimkám spravovaného kódu. Například modul runtime mapuje popis z chyby COM na vlastnost výjimky Message. Pokud HRESULT neposkytuje žádné další informace o chybách, modul runtime vyplní mnoho vlastností výjimky výchozími hodnotami.

Jestliže metoda selže v nespravovaném kódu, výjimku lze předat spravovanému segmentu kódu. Téma HRESULTS a výjimky obsahuje tabulku, která ukazuje, jak je HRESULTS mapováno na objekty výjimek modulu runtime.

Viz také

Koncepty

Zpracování a vyvolání výjimek

Další zdroje

Advanced COM Interoperability