我在下面創建了此方法,該方法對第三方API進行HTTP調用。我只想就我是否以最好的方式處理這個問題發表意見。如果調用失敗,則只有在響應不爲空時,我才需要返回ExistsInList布爾值。但在最後一個return語句中,我不必基本上做另一個返回selectResponse == null嗎? false:selectResponse.ExistsInList;首先檢查null,就像之前的catch返回一樣?處理來自Web Service Call Wrapper的返回值
剛纔似乎多餘的方式我接近這一點,我不知道我是否真的需要在最終的回報中再次檢查null,但我認爲是的,因爲你不能總是依靠響應給予即使沒有發現錯誤,您也可以獲得有效的答覆。
public static bool UserExistsInList(string email, string listID)
{
SelectRecipientRequest selectRequest = new SelectRecipientRequest(email, listID);
SelectRecipientResponse selectResponse = null;
try
{
selectResponse = (SelectRecipientResponse)selectRequest.SendRequest();
}
catch (Exception)
{
return selectResponse == null ? false : selectResponse.ExistsInList;
}
return selectResponse.ExistsInList;
}
是的,任何不是'throw;'en的異常都必須記錄下來。 – Nate 2010-06-15 20:29:00
好的,但我不想在這裏停止我的整個應用程序,如果我在這種情況下得到一個異常,因爲我不在乎這裏是否有異常...這對於這種依賴於業務邏輯/場景的特定方法是無關緊要的 – PositiveGuy 2010-06-15 20:50:42
我同意你和Nate的看法......謝謝你,經驗值得記住。但是如果我們不關心它們,我們不想記錄異常。例如,如果第二次呼叫失敗,那沒關係,這只是意味着它們不在禁止列表中,這很好。我們只是做一個快速檢查,看看是否有人在那裏,如果是這樣做一點清理並刪除該記錄。如果它不存在或者SelectResponse失敗,我們可以稍後重試,但如果失敗則不是關鍵,因爲它僅僅是爲了清理目的而對它們的記錄進行檢查。我們不需要看到大量的錯誤。 – PositiveGuy 2010-06-15 20:52:37