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

Тут можно читать онлайн Герберт Шилдт - C# 4.0: полное руководство - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство ООО И.Д. Вильямс, год 2011. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    C# 4.0: полное руководство
  • Автор:
  • Жанр:
  • Издательство:
    ООО И.Д. Вильямс
  • Год:
    2011
  • Город:
    Москва -- Киев
  • ISBN:
    978-5-8459-1684-6
  • Рейтинг:
    3.93/5. Голосов: 141
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.


Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

C# 4.0: полное руководство - читать онлайн бесплатно ознакомительный отрывок

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

Интервал:

Закладка:

Сделать

// Изящно обработать исключительную ситуацию и продолжить выполнение программы.

using System;

class ExcDemo3 {

static void Main() {

int[] numer = { 4, 8, 16, 32, 64, 128 };

int[] denom = { 2, 0, 4, 4, 0, 8 };

for(int i=0; i < numer.Length; i++) {

try {

Console.WriteLine(numer[i] + " / "+

denom[i] + "равно "+

numer[i]/denom[i]);

}

catch (DivideByZeroException) {

// Перехватить исключение.

Console.WriteLine("Делить на нуль нельзя!");

}

}

}

}

Ниже приведен результат выполнения этой программы.

4/2 равно 2

Делить на нуль нельзя!

16/4 равно 4

32/4 равно 8

Делить на нуль-нельзя!

128 / 8 равно 16

Из данного примера следует еще один важный вывод: как только исключение обработано, оно удаляется из системы. Поэтому в приведенной выше программе проверка ошибок в блоке try начинается снова на каждом шаге цикла for, при условии, что все предыдущие исключительные ситуации были обработаны. Это позволяет обрабатывать в программе повторяющиеся ошибки.

Применение нескольких операторов catch

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

// Использовать несколько операторов catch.

using System;

class ExcDemo4 {

static void Main() {

// Здесь массив numer длиннее массива denom.

int[] numer = { 4, 8, 16, 32, 64, 128, 256, 512 };

int[] denom = { 2, 0, 4, 4, 0, 8 };

for(int i=0; i < numer.Length; i++) {

try {

Console.WriteLine(numer[i] + " / " +

denom[i] + " равно " + numer[i]/denom[i ]) ;

}

catch (DivideByZeroException) {

Console.WriteLine("Делить на нуль нельзя!");

}

catch (IndexOutOfRangeException) {

Console.WriteLine("Подходящий элемент не найден.");

}

}

}

}

Вот к какому результату приводит выполнение этой программы.

4/2 равно 2

Делить на нуль нельзя!

16/4 равно 4

32/4 равно 8

Делить на нуль нельзя!

128 / 8 равно 16

Подходящий элемент не найден.

Подходящий элемент не найден.

Как следует из приведенного выше результата, каждый оператор catchреагирует только на свой тип исключения.

Вообще говоря, операторы catchвыполняются по порядку их следования в программе. Но при этом выполняется только один блок catch, в котором тип исключения совпадает с типом генерируемого исключения. А все остальные блоки catchпропускаются.

Перехват всех исключений

Время от времени возникает потребность в перехвате всех исключений независимо от их типа. Для этой цели служит оператор catch, в котором тип и переменная исключения не указываются. Ниже приведена общая форма такого оператора.

catch {

// обработка исключений

}

С помощью такой формы создается "универсальный" обработчик всех исключений, перехватываемых в программе.

Ниже приведен пример такого "универсального" обработчика исключений. Обратите внимание на то, что он перехватывает и обрабатывает оба исключения, IndexOutOfRangeExceptionи DivideByZeroException, генерируемых.в программе.

// Использовать "универсальный" обработчик исключений.

using System;

class ExcDemo5 {

static void Main() {

// Здесь массив numer длиннее массива denom.

int[] numer = { 4, 8, 16, 32, 64, 128, 256, 512 };

int[] denom = { 2, 0, 4, 4, 0, 8 };

for (int i=0; i < numer.Length; i++) {

try {

Console.WriteLine(numer[i] + " / " +

denom[i] + " равно " + numer[i]/denom[i]);

}

catch { // "Универсальный" перехват.

Console.WriteLine ("Возникла некоторая исключительная ситуация.");

}

}

}

}

При выполнении этой программы получается следующий результат.

4/2 равно 2

Возникла некоторая исключительная ситуация.

16/4 равно 4

32/4 равно 8

Возникла некоторая исключительная ситуация.

128 / 8 равно 16

Возникла некоторая исключительная ситуация.

Возникла некоторая исключительная ситуация.

Применяя "универсальный" перехват, следует иметь в виду, что его блок должен располагаться последним по порядку среди всех блоков catch.

-------------------------------------

ПРИМЕЧАНИЕ

В подавляющем большинстве случаев “универсальный” обработчик исключений не применяется. Как правило, исключения, которые могут быть сгенерированы в коде, обрабатываются по отдельности. Неправильное использование “универсального" обработчика может привести к тому, что ошибки, перехватывавшиеся при тестировании программы, маскируются. Кроме того, организовать надлежащую обработку всех исключительных ситуаций в одном обработчике не так-то просто. Иными словами, “универсальный" обработчик исключений может оказаться пригодным лишь в особых случаях, например в инструментальном средстве анализа кода во время выполнения.

--------------------------------------

Вложение блоков try

Один блок tryможет быть вложен в другой. Исключение, генерируемое во внутреннем блоке tryи не перехваченное в соответствующем блоке catch, передается во внешний блок try. В качестве примера ниже приведена программа, в которой исключение IndexOutOfRangeExceptionперехватывается не во внутреннем, а во внешнем блоке try.

// Использовать вложенный блок try.

using System;

class NestTrys {

static void Main() {

// Здесь массив numer длиннее массива denom.

int[] numer = { 4, 8, 16, 32, 64, 128, 256, 512 };

int[] denom = { 2, 0, 4, 4, 0, 8 };

try { // внешний блок try

for(int i=0; i < numer.Length; i++) {

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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