专门的FaultException子类或FaultException<;T>;

本文关键字:FaultException lt gt 子类 | 更新日期: 2023-09-27 18:26:22

我希望我的WCF服务能够返回一些已知的错误。即定义的FaultContract

我有点困惑,是应该派生自己的FaultException子类,还是创建一个细节类并使用FaultException<TDetail>

两者似乎都有分散的例子,我只是想知道普遍的共识是什么。

我倾向于派生,因为我认为客户端代码会更干净地捕捉MyException,而不是以WCF为中心的FaultException<MyExceptionDetail>,但我对此并没有什么强烈的感觉

通常应将FaultException用于未知或通用故障,将FaultException<T>用于类型化故障。

类型化错误更类似于标准.NET中的类型化异常,因此它们将是首选方法。

请注意,您需要在服务约定定义中使用故障约定,否则所有异常都将作为FaultException到达客户端,即使抛出FaultException<T>也是如此。

专门的FaultException子类或FaultException<;T>;