SFu*_*n28 3 .net wcf .net-4.0 faultexception
如何捕获任何Exception派生的TDetail的FaultException?
我尝试过,catch( FaultException<Exception> ) {}但似乎没有用.
编辑
目的是获取对Detail属性的访问权限.
FaultException<>继承自FaultException.所以将代码更改为:
catch (FaultException fx) // catches all your fault exceptions
{
...
}
Run Code Online (Sandbox Code Playgroud)
===编辑===
如果你需要FaultException<T>.Detail,你有几个选择,但没有一个是友好的.最好的解决方案是捕获您想要捕获的每个类型:
catch (FaultException<Foo> fx)
{
...
}
catch (FaultException<Bar> fx)
{
...
}
catch (FaultException fx) // catches all your other fault exceptions
{
...
}
Run Code Online (Sandbox Code Playgroud)
我建议你那样做.否则,你将陷入反思.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
反思很慢,但由于异常应该是罕见的......再次,我建议你尽可能地将它们分开.
| 归档时间: |
|
| 查看次数: |
1635 次 |
| 最近记录: |