HttpWebRequest proper exception handling
So I'm using the HttpWebRequest API in the System.Net assembly but because
C# has no checked exceptions, I'm not sure where to put my try-catch
blocks to properly handle inevitable exceptions caused by common things
like a network error. You know, in Java we would call these plain old
checked IOExceptions.
This is what I have so far. Are my try-catch blocks properly set up to
handle network errors? Am I wrapping the right method calls? Looking at
the documentation, I think they are right, but I need a second pair of
eyes.
HttpWebRequest request = WebRequest.CreateHttp(url);
request.Method = "POST";
request.BeginGetRequestStream(getRequestResult =>
{
HttpWebRequest getRequestRequest = (HttpWebRequest)
getRequestResult.AsyncState;
try
{
Stream requestStream =
getRequestRequest.EndGetRequestStream(getRequestResult);
requestStream.Write(parametersData, 0,
parametersData.Length);
requestStream.Dispose();
getRequestRequest.BeginGetResponse(getResponseResult =>
{
HttpWebRequest getResponseRequest =
(HttpWebRequest)getResponseResult.AsyncState;
try
{
WebResponse response =
getResponseRequest.EndGetResponse(getRequestResult);
Stream responseStream =
response.GetResponseStream();
StreamReader reader = new
StreamReader(responseStream);
string jsonString = reader.ReadToEnd();
reader.Dispose();
JObject jsonObject =
JObject.Parse(jsonString);
onResult(StatusCode.Ok, jsonObject);
}
catch (WebException)
{
onResult(StatusCode.NetworkError);
}
}, getRequestRequest);
}
catch (IOException)
{
onResult(StatusCode.NetworkError);
}
}, request);
No comments:
Post a Comment