Laden...

HResult aus System.Exception auslesen

Erstellt von HiJack82 vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.091 Views
H
HiJack82 Themenstarter:in
19 Beiträge seit 2014
vor 8 Jahren
HResult aus System.Exception auslesen

Hallo zusammen,

ich habe einen Fall, bei dem ich den HResult Wert aus einer System.Exception auslesen muss. Leider ist diese Property (get private).

Kennt jemand einen guten Weg an den HResult Wert zu kommen?

3.003 Beiträge seit 2006
vor 8 Jahren

Vermutlich bist du auf eine Frameworkversion < 4.5 (ab da ist der HResult-Getter public) beschränkt?

Falls dem so ist - Reflection und https://msdn.microsoft.com/en-us/library/6kec8wwk.aspx

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

H
HiJack82 Themenstarter:in
19 Beiträge seit 2014
vor 8 Jahren

Vielen Dank schon mal für die Auskunft. Das ist ja hoch interessant.
Ja genau, ich bin auf VS2010 beschränkt. Das bietet mir nur .NET 4.0

Mit dem Link komme ich nicht klar. Mit Type.GetType() bekomme ich die Properties der System.Exception Klasse. Die kann ich aber auch im Object-Browser nachlesen. Was ich brauche ist der Int32 Wert des HResults. Wie ich da ran komme ist mir immer noch total unklar.

Kann mir vielleicht jemand einen Code-Schnippsel schicken?
Ich hab mich schon wund-gegoogelt, ich find einfach nix zu dem Thema. Vielleicht suche ich mit den falschen Begriffen...

H
HiJack82 Themenstarter:in
19 Beiträge seit 2014
vor 8 Jahren

Puh, jetzt hab ich endlich was gefunden.


int HResult = Marshal.GetHRForException(ex);

Jetzt weiß ich nur nicht, ob ich das in einem Try Catch abfragen muss. Gibt es vielleicht irgendwelche Exceptions ohne HRESULT?

771 Beiträge seit 2009
vor 8 Jahren

Bei Type.GetProperties (bzw. GetProperty etc.) kannst du als Parameter BindingFlags.NonPublic angeben:


Exception e;

var prop = e.GetType().GetProperty("HResult", BindingFlags.NonPublic | BindingFlags.Instance);
int hresult = (int)prop.GetValue();

H
HiJack82 Themenstarter:in
19 Beiträge seit 2014
vor 8 Jahren

Danke, dass war sehr hilfreich!