私のコードはいくつかの残りのAPI(GETメソッド)を処理します。このGETメソッド、このような応答を返す:C#は、応答を処理するtry catch内でtry catchを使用する必要がありますか?それは悪い考えですか?
{"error":0,"Logs":[{"LoggerIdx":"91","OfficeID":"MIA1A0955","Agent":"581A78AD"}]}
とクエリが何も見つからない場合は、返されます。私は値を取得するために、このAPI呼び出しを使用してい
{"error":0,"Logs":[{"No values found"}]}
コードとレポートを表示する:
private string uri = "http://localhost";
public async Task<List<T>> GetWSObjects<T>(string uriActionString)
{
return new List<T> { await this.GetWSObject<T>(uriActionString) };
}
public async Task<T> GetWSObject<T>(string uriActionString)
{
T returnValue =
default(T);
try
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(uri);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync(uriActionString);
response.EnsureSuccessStatusCode();
returnValue = JsonConvert.DeserializeObject<T>(((HttpResponseMessage)response).Content.ReadAsStringAsync().Result);
}
return returnValue;
}
catch (Exception e)
{
throw (e);
}
}
returnValueは返信の値で私のモデルを記入しようとします。ただし、応答に「値が見つかりません」だけが含まれている場合は、(明らかに)壊れます。私の質問は、このtry-catch内にtry-catchを配置してこの動作を処理するべきかどうかです。問題は、「値が見つかりません」だけでなく、すべての例外がユーザーに表示されていることです。提案?私のモデルは次のとおりです。
public class BuildingReportModel
{
public string message1 { get; set; }
public Log[] Logs { get; set; }
}
public class Log
{
public string ProdLoggerIdx { get; set; }
public string OfficeID { get; set; }
public string Agent { get; set; }
}
エラーを再送信するだけです。あなたも外のすべての一緒にキャッチを取り除くことができます – Steve
@スティーブ私はそれについて考えたが、悪い入力、SQLのような他の本当のエラーをキャッチするのはどうですか? –
あなたはこの[回答](http://stackoverflow.com/a/14974163/6936343)を見てください。 –