我读过这个问题: What is the best approach to handle exceptions in WCF service?
该答案解答了如何处理例外。
我看到很少有服务返回包含Data和每个方法的Error对象(如果有)的MyServiceResult
类。永远不要抛出FaultException
。所以客户将收到这些信息作为一个优雅的"结果中的反应。
e.g。
[OperationContract]
MyServiceResult Login(string userName, string password);
我的问题是处理错误的更好方法,为什么?
答案 0 :(得分:2)
这个问题类似于在通常的内部流程执行中处理被调用方法中的错误的最佳方法。答案是它取决于您期望的错误。意味着什么是异常(某些因方法行为而意外突破),那些可以处理的错误是什么。我认为异常不应该创建程序工作流程。所以抛出WCF FaultException
对我来说是不好的。在这种情况下,如您所述,返回一些具有预期错误的结果对象可以正常工作。
有关此内容的进一步阅读,我强烈建议您查看Steve McConnell代码完整书,第8.3章错误处理技巧和8.4例外情况。我相信WCF在这里不会改变规则。