} 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определяется несколько конструкторов. Ниже приведены наиболее часто используемые конструкторы этого класса.
public Uri(string
public Uri(Uri
В первой форме конструктора объект классаUriсоздается по идентификатору URI, заданному в виде строки