웹 요청에 "사용"문 안에 "try/catch"를 포함해도 괜찮습니까? 내 코드가 맞습니까?C# - 웹 요청에 "using"문 내에 "try/catch"를 포함해도 괜찮습니까? 내 코드가 맞습니까?
가 HttpWebResponse 클래스
- 에 대해 어떤 경우에도 공개되어 있는지 자원을 만들기 위해 "사용"문을 사용하고 싶지만 아직이 경우 일부 사용자 지정 물건을하고 싶지 : 그건 내 요구 사항이 있습니다 예외 HttpWebResponse 및 "응답 = (HttpWebResponse) request.GetResponse();" 특히.
내 소스 코드 :
var result = new HttpHeaderInfo();
HttpWebRequest request = null;
HttpWebResponse response = null;
using (response)
{
try
{
request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "HEAD";
request.KeepAlive = false;
request.Timeout = Properties.Settings.Default.WebTimeoutDefault;
response = (HttpWebResponse)request.GetResponse();
result.LastModified = response.LastModified;
result.ContentType = response.ContentType;
result.StatusCode = response.StatusCode;
result.ContentLength = response.ContentLength;
}
catch (Exception ex)
{
if (ex is InvalidOperationException ||
ex is ProtocolViolationException ||
ex is WebException)
{
result.HttpError = ex;
result.LastModified = System.DateTime.MinValue;
result.ContentType = null;
}
else { throw; }
}
}
감사
감사합니다 - 효과적으로 효과적으로 내 코드에서 3 예외를 캡처했다 - 당신이 InvalidOperationException 및 ProtocolViolationException cuold 확장 할 수 있는지 확실하지 않았다 시스템 유형 오류 (하나의 코드가 문제가 발생하지 않는 것) - HTTPWebRequest에 대해 여기서는 WebException 만 처리하는 것이 적절하다고 생각합니까? – Greg
@ 그렉 : 당신은 아마 다른 예외를 처리 할 필요가 있습니다. 나는 예제를 혼란스럽게하고 싶지 않습니다. 그렇게하기 위해 여러 개의 'catch'블록을 추가 할 수 있습니다. - "Moron 's"응답은이를 수행하는 예를 보여줍니다. (주의 - 아마도'ProtocolViolationException'을 잡을 수는 있지만'InvalidOperationException'은 잡을 수 없을 것입니다 - 전자는 후자에서 파생되며 GetResponse에서 다른 유형의'InvalidOperationException'을 얻지 않아야합니다.) – Aaronaught