我有這樣的代碼,如果壞的結果遇到和在例外的情況下返回null:我該如何重構此代碼以不返回null兩次?
private JArray GetRESTData(string uri)
{
try
{
var webRequest = (HttpWebRequest)WebRequest.Create(uri);
var webResponse = (HttpWebResponse)webRequest.GetResponse();
if ((webResponse.StatusCode == HttpStatusCode.OK) && (webResponse.ContentLength > 0))
{
var reader = new StreamReader(webResponse.GetResponseStream());
string s = reader.ReadToEnd();
return JsonConvert.DeserializeObject<JArray>(s);
}
MessageBox.Show(string.Format("Status code == {0}", webResponse.StatusCode));
return null;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}
...但它聞起來有點腐臭。有沒有辦法我可以重構這個不調用「返回null」兩次?
添加最終塊返回null那裏,從刪除這兩個嘗試和catch塊 – Miller
不使用「使用塊」任何理由webResponse.GetResponseStream()當你有一個不好的連接時,它會處理這個對象。 – ACS
這段代碼有比兩個'return null'更大的問題。它吃任意的異常,它將錯誤顯示代碼與業務邏輯混合在一起,它不會處理它的資源。在查看瑣事之前解決大問題。 –