Було б добре, якби був якийсь спосіб відключення "кинути на невдалий код", але якщо ви вловили WebException, ви можете принаймні використовувати відповідь:
using System;
using System.IO;
using System.Web;
using System.Net;
public class Test
{
static void Main()
{
WebRequest request = WebRequest.Create("http://csharpindepth.com/asd");
try
{
using (WebResponse response = request.GetResponse())
{
Console.WriteLine("Won't get here");
}
}
catch (WebException e)
{
using (WebResponse response = e.Response)
{
HttpWebResponse httpResponse = (HttpWebResponse) response;
Console.WriteLine("Error code: {0}", httpResponse.StatusCode);
using (Stream data = response.GetResponseStream())
using (var reader = new StreamReader(data))
{
string text = reader.ReadToEnd();
Console.WriteLine(text);
}
}
}
}
}
Можливо, ви хочете інкапсулювати біт "отримати мені відповідь, навіть якщо це не код успіху", окремим методом. (Я б запропонував вам все-таки кинути, якщо відповіді немає, наприклад, якщо ви не змогли підключитися.)
Якщо відповідь на помилку може бути великою (що незвично), ви можете налаштувати, HttpWebRequest.DefaultMaximumErrorResponseLengthщоб переконатися, що ви отримали всю помилку.