Dlaczego HttpWebRequest rzuca wyjątek zamiast zwracać HttpStatusCode.NotFound?

Usiłuję zweryfikować istnienie Url przy użyciu HttpWebRequest. Znalazłem kilka przykładów, które zasadniczo to robią:

<code>HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
request.Method = "HEAD";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    return response.StatusCode;
}
</code>

Jeśli jednak adres URL jest rzeczywiście uszkodzony, to nie zwraca odpowiedzi, zamiast tego rzuca wyjątek.

Zmodyfikowałem mój kod do tego:

<code>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;
}
</code>

który wydaje się w końcu robić to, co chcę.

Ale chciałbym wiedzieć, dlaczego żądanie zgłasza wyjątek zamiast zwracać odpowiedź z kodem stanu NotFound?

questionAnswers(2)

yourAnswerToTheQuestion