Код состояния веб-ответа

У меня есть эта простая функция, чтобы получить HTML-страницы и вернуть их в виде строки; хотя иногда я получаю 404. Как я могу вернуть строку HTML только в том случае, если запрос был успешным, и вернуть что-то вроде BadRequest, когда он содержит 404 или любой другой код состояния ошибки?

public static string GetPageHTML(string link)
{
    using (WebClient client= new WebClient())
    {
        return client.DownloadString(link);
    }
}

Ответ 1

Вы можете поймать WebException:

public static string GetPageHTML(string link)
{
    try
    {
        using (WebClient client = new WebClient())
        {
            return client.DownloadString(link);
        }
    }
    catch (WebException ex)
    {
        var statusCode = ((HttpWebResponse)ex.Response).StatusCode;
        return "An error occurred, status code: " + statusCode;
    }
}

Конечно, было бы уместнее поймать это исключение в вызывающем коде и даже не попытаться разобрать html вместо того, чтобы помещать try/catch в саму функцию.