2011-12-13 136 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