NameResolutionFailure
Pending
PipelineFailure
ProtocolError
ProxyNameResolutionFailure
ReceiveFailure
RequestCanceled
RequestProhibitedByCachePolicy
RequestProhibitedByProxy
SecureChannelFailure
SendFailure
ServerProtocolViolation
Success
Timeout
TrustFailure
UnknownError
Как только будет выяснена причина ошибки, в программе могут быть предприняты соответствующие действия.
Исключения, генерируемые методом GetResponseStream ()
Длясоединения по протоколу HTTP методGetResponseStream() из классаWebResponseможет сгенерировать исключениеProtocolViolationException,которое в целом означает, что в работе по указанному протоколу произошла ошибка. Что же касается методаGetResponseStream(), то это означает, что ни один из действительных ответных потоков недоступен. ИсключениеObjectDisposedExceptionгенерируется в том случае, если ответ уже утилизирован. А исключениеIOException,конечно, генерируется при ошибке чтения из потока, в зависимости от того, как организован ввод данных.
Обработка исключений
В приведенном ниже примере программы демонстрируется обработка всевозможных сетевых исключений, которые могут возникнуть в связи с выполнением программы из предыдущего примера, в которую теперь добавлены соответствующие обработчики исключений.
// Пример обработки сетевых исключений.
using System; using System.Net; using System.10;
class NetExcDemo { static void Main() { int ch;
try {
// Сначала создать объект запроса типа WebRequest по указанному URI. HttpWebRequest req = (HttpWebRequest)
WebRequest.Create ("http://www.McGraw-Hill.com");
// Затем отправить сформированный запрос и получить на него ответ. HttpWebResponse resp = (HttpWebResponse) req.GetResponse ();
// Получить из ответа поток ввода.
Stream istrm = resp.GetResponseStream();
/* А теперь прочитать и отобразить гипертекстовое содержимое,
полученное по указанному URI. Это содержимое выводился на экран отдельными порциями по 400 символов. После каждой такой порции следует нажать клавишу
Console.Write ( (char) ch) ; if((i % 4 0 0)==0) {
Console.Write ("ХпНажмите клавишу
Console.ReadLine() ;
}
}
// Закрыть ответный поток. При этом закрывается // также поток ввода istrm. resp.Close ();
} catch(WebException exc) {
Console.WriteLine ("Сетевая ошибка: " + exc.Message +
"\пКод состояния: " + exc.Status);
} catch(ProtocolViolationException exc) {
Console.WriteLine("Протокольная ошибка: " + exc.Message);
} catch(UriFormatException exc) {