HttpWebRequestを使用してURLの存在を確認しようとしています。基本的にこれを行ういくつかの例を見つけました:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
request.Method = "HEAD";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
return response.StatusCode;
}
ただし、URLが実際に壊れている場合は、応答を返さず、代わりに例外をスローします。
コードを次のように変更しました。
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
request.Method = "HEAD";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
return response.StatusCode;
}
}
catch (System.Net.WebException ex)
{
var response = ex.Response as HttpWebResponse;
return response == null ? HttpStatusCode.InternalServerError : response.StatusCode;
}
これは最終的に私がやりたいことをするようです。
しかし、知りたいのですが、NotFoundステータスコードで応答を返す代わりに、リクエストが例外をスローするのはなぜですか?