2011-12-13 135 views
2

我有一个理论问题。我有一个需要与.NET客户端和iPhone应用程序交谈的WCF Web服务。WCF和错误处理,最佳实践

在服务我有很多方法,如:

User Login(string email,string password); etc.. 

如果成功的话,我想的服务来回报我的用户。否则,我想让该服务抛出一个自定义异常,如EmailNotFoundExceptionPasswordNotCorrectException

我被告知这不是最好的方法,特别是因为iPhone客户端会使用这项服务。

我应该改变我的所有方法来返回一些WrapperEntity将包含Object和错误字符串/异常对象吗?

这对我很重要,因为有时我需要知道操作失败的原因。如果Login返回null,我将知道操作失败,但我不知道为什么。

+0

您可以对常规尝试捕获异常或RaiseExceptions使用可以包装的空值如果你不确定并且不想假设调用调用/方法总是会通过的话,那么你可以尝试捕捉它。经验法则是将所有内容都包含在Try catch中或者最后尝试捕获 – MethodMan

回答

6

您不应该在WCF服务中使用异常来定期与您的服务使用者通信。相反,请查看创建一个响应对象,其中包含您需要了解该操作的所有信息。

喜欢的东西:

public class LoginResponse 
{ 
    public User User { get; set; } 
    public string Message { get; set; } 
    public bool IsSuccessful 
    { 
     get { return User != null; } 
    } 
} 

,然后你的登录操作看起来是这样的:

LoginResponse Login(string email, string password) 
{ ... } 

这样,如果操作失败,你可以在解释为什么响应消息放入。

+0

好,谢谢 – ibm123