Герберт Шилдт - C# 4.0 полное руководство - 2011

Тут можно читать онлайн Герберт Шилдт - C# 4.0 полное руководство - 2011 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Герберт Шилдт - C# 4.0 полное руководство - 2011 краткое содержание

C# 4.0 полное руководство - 2011 - описание и краткое содержание, автор Герберт Шилдт, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

C# 4.0 полное руководство - 2011 - читать онлайн бесплатно полную версию (весь текст целиком)

C# 4.0 полное руководство - 2011 - читать книгу онлайн бесплатно, автор Герберт Шилдт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Исключения, генерируемые методом GetResponse ()

При вызове метода GetResponse () для получения ответа по протоколу HTTP может произойти целый ряд ошибок. Эти ошибки представлены следующими исключениями: InvalidOperationException, ProtocolViolationException, NotSupportedException и WebException. Наибольший интерес среди них вызывает исключение WebException.

У исключения WebException имеются два свойства, связанных с сетевыми ошибками: Response и Status. С помощью свойства Response можно получить ссылку на объект типа WebResponse в обработчике исключений. Для соединения по протоколу HTTP этот объект описывает характер возникшей ошибки. Свойство Response объявляется следующим образом.

public WebResponse Response { get; }

Когда возникает ошибка, то с помощью свойства Status типа WebException можно выяснить, что именно произошло. Это свойство объявляется следующим образом:

public WebExceptionStatus Status {get; }

где WebExceptionStatus — это перечисление, которое содержит приведенные ниже значения.

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 символов. После каждой такой порции следует нажать клавишу , чтобы вывести на экран следующую порцию, состоящую из 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 ("ХпНажмите клавишу .");

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);

} catch(IOException exc) {

Console.WriteLine("Ошибка ввода-вывода: " + exc.Message);

} catch(System.Security.SecurityException exc) {

Console.WriteLine("Исключение в связи с нарушением безопасности: " + exc.Message);

} catch(InvalidOperationException exc) {

Console.WriteLine("Недопустимая операция: " + exc.Message);

}

}

}

Теперь перехватываются все исключения, которые могут быть сгенерированы сетевыми методами. Так, если изменить вызов метода Create () следующим образом:

WebRequest.Create(" http://www.McGraw-Hill.com/moonrocket ");

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

Сетевая ошибка: Удаленный сервер возвратил ошибку: (404) Не найден.

Код состояния: ProtocolError

На веб-сайте по адресу www.McGraw-Hill . com отсутствует раздел moonrocket, и поэтому он не найден по указанному URI, что и подтверждает приведенный выше результат.

Ради краткости и ясности в программах большинства примеров из этой главы отсутствует полноценная обработка исключений. Но в реальных приложениях она просто необходима.

Класс Uri

Как следует из табл. 26.1, метод WebRequest. Create () существует в двух вариантах. В одном варианте он принимает идентификатор URI в виде строки. Именно этот вариант и был использован в предьтдугцих примерах программ. А во втором варианте этот метод принимает идентификатор URI в виде экземпляра объекта класса Uri, определенного в пространстве имен System. Класс Uri инкапсулирует идентификатор URL Используя класс Uri, можно сформировать URI, чтобы затем передать этот идентификатор методу Create () . Кроме того, идентификатор URI можно разделить на части. Для выполнения многих простых операций в Интернете класс Uri малопригоден. Тем не менее он может оказаться весьма полезным в более сложных ситуациях сетевого подключения к Интернету.

В классе Uri определяется несколько конструкторов. Ниже приведены наиболее часто используемые конструкторы этого класса.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Герберт Шилдт читать все книги автора по порядку

Герберт Шилдт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




C# 4.0 полное руководство - 2011 отзывы


Отзывы читателей о книге C# 4.0 полное руководство - 2011, автор: Герберт Шилдт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x