2014-01-12 1 views
2

저는 C# 코드에서 많은 웹 API 호출을 작성하고 있습니다. 나는 오류를 잡는 법을 모른다. 인터넷 연결이 작동하지 않는다고 가정하면 내 코드에 런타임 오류가 표시됩니다. 내가 그들을 제대로 잡으려고 블록에 끼워 넣는 방법, 일반적인 규칙은 무엇입니까? 내가 찾은 모든 기사는 오류 및 오류 메시지를 다시 던지는 방법에 관한 것입니다.
예를 들어, API 호출 : 또한웹 API 호출 중에 예외를 잡으십시오.

WebResponse webResponse = webRequest.GetResponse(); 
string res = webResponse.ToString(); 

using (var client = new HttpClient()) 
     client.BaseAddress = new Uri(CairoBaseUrl); 
     var getStringTask = client.GetStringAsync(requestUrl); 
     response = await getStringTask; 

그리고,

HttpResponseMessage response = await client.PostAsync(
       url,requestContent); 
+0

http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling –

+1

당신은 무엇을 이해하지? 'catch' 블록을 만들고 오류 처리 방법을 결정하십시오. – SLaks

+0

@AnkushJain 위의 스 니펫 중 하나에서 오류를 처리하는 방법에 대한 간단한 예제를 제공 할 수 있습니다. – Maxsteel

답변

2

당신은 내가 당신이 HttpClient를 위해 수행되는을 사용하는 것이 좋습니다 것입니다 asp.net 웹 API를 호출하는 경우 그 목적

try  
    { 
    HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/"); 
    response.EnsureSuccessStatusCode(); 
    string responseBody = await response.Content.ReadAsStringAsync(); 
    // Above three lines can be replaced with new helper method below 
    // string responseBody = await client.GetStringAsync(uri); 

    Console.WriteLine(responseBody); 
    } 
    catch(HttpRequestException e) 
    { 
    Console.WriteLine("\nException Caught!"); 
    Console.WriteLine("Message :{0} ",e.Message); 
    } 
,

이것은 당신이

using (var client = new HttpClient()) 
     client.BaseAddress = new Uri(CairoBaseUrl); 
     var getStringTask = client.GetStringAsync(requestUrl); 
     response = await getStringTask; 

을 가지고 있지만 운영자가 그것이 있어야하므로 비동기 표시 방법 만 사용할 수 있습니다 기다리고 있기 때문에 실 거예요 작동하면 예를 HTTP 클라이언트

를 사용하여 예외를 처리하는 방법을 MSDN에서 예입니다

var getStringTask = await client.GetStringAsync(requestUrl); 
+0

감사합니다. 정확히 내가 무엇을 찾고 있었는지. – Maxsteel

+1

정말로 세부 사항을 원한다면'e.Message'를 사용하지 말 것을 강력히 권한다. 'e.ToString()'을 사용하십시오. –

+0

@ JohnSaunders 알았습니다. :) – Maxsteel

관련 문제