/>

CacheEntryNotFound

ConnectFailure

ConnectionClosed

KeepAliveFailure

MessageLengthLimitExceeded

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 символов. После каждой такой порции следует нажать клавишу <ENTER>, чтобы вывести на экран следующую порцию, состоящую из 400 символов. */ for(int i=l; ; i++) { ch = istrm.ReadByte(); if(ch == -1) break;

Console.Write ( (char) ch) ; if((i % 4 0 0)==0) {

Console.Write ('ХпНажмите клавишу <Enter>.');

Console.ReadLine() ;

}

}

// Закрыть ответный поток. При этом закрывается // также поток ввода istrm. resp.Close ();

} catch(WebException exc) {

Console.WriteLine ('Сетевая ошибка: ' + exc.Message +

'пКод состояния: ' + exc.Status);

} catch(ProtocolViolationException exc) {

Console.WriteLine('Протокольная ошибка: ' + exc.Message);

} catch(UriFormatException exc) {

Console.WriteLine('Ошибка формата URI: ' + exc.Message);

} catch(NotSupportedException exc) {

Console.WriteLine('Неизвестный протокол: ' + exc.Message);

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату