Sdílet prostřednictvím


System.Runtime.InteropServices.COMException – třída

Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.

Třída COMException je výjimka, která je vyvolána při nerozpoznané HRESULT je vrácena z volání metody COM.

Modul CLR (Common Language Runtime) transformuje dobře známé hodnoty HRESULT na výjimky .NET a umožňuje objektům MODELU COM vracet smysluplné informace o chybách spravovaným klientům. Mapování HRESULT na výjimku funguje také v opačném směru vrácením konkrétních HRESULT nespravovaným klientům. Podrobnosti o mapování najdete v tématu Mapování HRESULT a výjimek.

Pokud modul runtime narazí na neznámé HRESULT (HRESULT, který nemá konkrétní odpovídající výjimku), vyvolá instanci COMException třídy. Tato výjimka pro všechny účely zveřejňuje stejné členy jako libovolnou výjimku a dědí veřejnou ErrorCode vlastnost, která obsahuje HRESULT vrácenou volaným. Pokud je pro modul runtime k dispozici chybová zpráva (získaná z rozhraní IErrorInfo nebo Err objektu v jazyce Visual Basic nebo v některých případech z operačního systému), vrátí se zpráva volajícímu. Pokud ale vývojář komponenty COM nezahrne chybovou zprávu, vrátí modul runtime místo řetězce zprávy osmimístnou hodnotu HRESULT. Funkce HRESULT umožňuje volajícímu určit příčinu obecné výjimky.

Zpracování výjimky COMException

Tady jsou některé aspekty řešení potíží s COMException výjimkou.

ErrorCode Zkontrolujte vlastnost Když modul runtime narazí na neznámé HRESULT a vyvolá COMException výjimku, ErrorCode vlastnost obsahuje chybovou zprávu nebo pokud je chybová zpráva nedostupná, hodnota HRESULT osmimístná. S určením příčiny výjimky vám může pomoct chybová zpráva nebo hodnota HRESULT.

Seznam hodnot HRESULT naleznete v části Běžné hodnoty HRESULT.

Při předávání opožděných argumentů metodám systém Microsoft Office objekty může být vyvolán výjimka, COMException když objekty jsou objekty MODELU COM. Pozdní pořadač předpokládá, že taková volání metody zahrnují ByRef parametr a že vlastnost, kterou předáte, má set příslušenství. Pokud vlastnost není, .NET vygeneruje MissingMethodException výjimku (s CORE_E_MISSINGMETHOD HRESULT). Chcete-li toto chování obejít, použijte objekty s časnou vazbou nebo předejte proměnnou místo vlastnosti objektu.

Com slouží ke komunikaci mezi sadou Visual Studio a procesem hostování. Protože se používá před spuštěním kódu, volání CoInitializeSecurity způsobí vyvolání této výjimky. V některých případech může problém vyřešit spuštění sady Visual Studio jako Správa istrator. Proces hostování můžete také zakázat.

Vyvolání výjimky COMException

I když můžete třídu použít COMException k vrácení konkrétních HRESULT nespravovaným klientům, vyvolání konkrétní výjimky .NET je lepší než použití obecné výjimky. Vezměte v úvahu, že spravované klienty i nespravované klienty mohou používat váš objekt .NET a vyvolání HRESULT spravovanému volajícímu je méně srozumitelné než vyvolání výjimky.