Usmívejte se, vyletí výjimka

5. 11. 2013 1:18 zboj

Dnes malá perlička z microsoftího světa. Nejprve o zlomyslných programátorech. Dostala se mi do ruky knihovna (DLL) pro .NET. Při použití v programu napsaném v C# vyhodila výjimku. RuntimeWrappedException. Dobrá tedy, někdo použil throw na objekt nedědící z Exception. Vezmu WrappedException, jenže tu nelze přetypovat, protože nějaký dobrák použil šablonu, takže C# onu třídu vůbec nevidí (nenašeptává, nepřekládá). Kontrolní otázka: pokud vím, že vyhozená třída má metodu UserData, jak ji zavolám?

A ještě pokračování. Při použití zmíněné knihovny v C++/CLI napíšu stejný kód, použiju „catch (Exception^ e)…“ a ejhle, výjimka se nezachytila. RuntimeWrappedException dědí z Exception, takže soudruzi z Microsoftu někde udělali chybu. Když nahradím Exception typem Object, najednou se zachytí. A e je typu RuntimeWrappedException. Nevím, co v Redmondu berou, ale chci to taky.

Sdílet