Було б добре, якби був якийсь спосіб відключення "кинути на невдалий код", але якщо ви вловили 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
щоб переконатися, що ви отримали всю помилку.