¿Por qué HttpWebRequest lanza una excepción en lugar de devolver HttpStatusCode.NotFound?

Estoy tratando de verificar la existencia de una URL usando HttpWebRequest. Encontré algunos ejemplos que hacen básicamente esto:

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

Sin embargo, si la URL está realmente dañada, no está devolviendo una respuesta, en cambio está lanzando una excepción.

He modificado mi código para esto:

<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>

Lo que parece hacer finalmente lo que quiero.

Pero me gustaría saber, ¿por qué la solicitud está lanzando una excepción en lugar de devolver la respuesta con un código de estado NotFound?

Respuestas a la pregunta(2)

Su respuesta a la pregunta