gpt4 book ai didi

.net - 捕获任何派生的 TDetail 异常的FaultException

转载 作者:行者123 更新时间:2023-12-02 15:42:29 28 4
gpt4 key购买 nike

如何捕获任何派生 TDetail 的 Exception 异常?
我试过catch( FaultException<Exception> ) {}但这似乎不起作用。

编辑
目的是获得对 Detail 属性的访问权限。

最佳答案

FaultException<>继承自FaultException 。因此,将您的代码更改为:

catch (FaultException fx)  // catches all your fault exceptions
{
...
}

===编辑===

如果您需要FaultException<T>.Detail ,你有几个选择,但没有一个是友好的。最好的解决方案是捕获您想要捕获的每种单独类型:

catch (FaultException<Foo> fx) 
{
...
}
catch (FaultException<Bar> fx)
{
...
}
catch (FaultException fx) // catches all your other fault exceptions
{
...
}

我建议你这样做。否则,你就会陷入反射(reflection)。

try
{
throw new FaultException<int>(5);
}
catch (FaultException ex)
{
Type exType = ex.GetType();
if (exType.IsGenericType && exType.GetGenericTypeDefinition().Equals(typeof(FaultException<>)))
{
object o = exType.GetProperty("Detail").GetValue(ex, null);
}
}

反射(reflection)很慢,但由于异常应该很少见......再次,我建议您尽可能地打破它们。

关于.net - 捕获任何派生的 TDetail 异常的FaultException<TDetail>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6269607/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com