Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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, když je vrácena nerozpoznaná hodnota HRESULT z volání metody COM.
Modul CLR (Common Language Runtime) transformuje známé HRESULT na výjimky .NET a umožňuje objektům 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 tak, že vrací konkrétní HRESULTy klientům bez správy. 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 jakoukoli výjimku a dědí veřejnou ErrorCode vlastnost, která obsahuje HRESULT vrácený 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.
Zkontrolujte vlastnost ErrorCode. Když modul runtime narazí na neznámé HRESULT a vyvolá výjimku COMException, vlastnost ErrorCode obsahuje buď chybovou zprávu, nebo pokud je chybová zpráva nedostupná, osmimístnou hodnotu HRESULT. 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í argumentů s pozdní vazbou do metod objektů Microsoft Office může být vyvolána výjimka, pokud jsou objekty COM objekty. 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 nefunguje, .NET vygeneruje výjimku MissingMethodException (s HRESULT CORE_E_MISSINGMETHOD
). 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ávce. Proces hostování můžete také zakázat.
Vyvolejte výjimku COMException
I když můžete COMException třídu použít k vrácení konkrétního 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.