Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 78

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 72 73 74 75 76 77 < 78 > 79 80 81 82 83 84 .. 404 >> Следующая

156 Глава 7

массива (не забудьте, что нумерация в массивах начинается с нуля), что приводит К возникновению исключительной ситуации System. IndexOutOfRangeExcept ion.

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

Вызов console.WriteLine о в этом блоке выводит сообщение, хранящееся в описании исключительной ситуации посредством е.Message (мы обладаем доступом к описанию исключительной ситуации через параметр блока catch). Дальнейшее пошаговое выполнение программы через блок finally (но не через второй блок catch, поскольку исключительная, ситуация уже обработана) снова приводит нас к выполнению очередной итерации цикла и к очередному вызову функции ThrowException () на строке 20.

Когда МЫ достигаем конструкции switch В функции ThrowException(), то входим в новый блок try, который начинается со строки 58. При попадании на строку 63, происходит выполнение вложенного вызова функции ThrowException)) — на этот раз с параметром 'index*. Еслн хотите, можете воспользоваться кнопкой Step Over для того, чтобы пропустить выполняемые здесь строки кода, поскольку мы их уже проходили. Как и в предыдущий раз, этот вызов создает исключительную ситуацию system.indexoutofRangeException. Однако теперь исключительная ситуация обрабатывается во вложенной конструкции try.. .catch.. .finally, которая находится внутри функции ThrowException)). В этой структуре отсугствует явное совпадение с данным типом исключительной ситуации, поэтому его обработкой занимается общин блок catch (начинающийся со строки 65).

Как и при обработке исключительных ситуаций в предыдущих случаях, мы проходим в лошаговом режиме этот блок и соответствующий ему блок finally и достигаем конца вызванной функции. Однако в данном случае имеется одно принципиальное отличие: хотя исключительная ситуация и была создана, она также была и обработана — кодом, находящимся в функции ThrowException)). Это

означает, что для обработки в функции Main)) исключительных ситуаций не осталось, поэтому мы напрямую попадаем в блок finally, после чего приложение

Просмотр списков и настройка исключительных ситуаций

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

обработки более сложными приложениями, VS

предоставляет специальный диалог (см. рис. слева), позволяющий просматривать и редактировать имеющиеся нсклЕОЧИтельные ситуации, который можно вызвать через пункт меню Debug | Exceptions... (или нажатием комбинации клавиш Ctrl+Alt+E).

Исключительные ситуации выводятся в соответствии со своей категорией и пространством имен библиотеки .NET. Исключительные ситуации, включенные в пространство имен system, можно просмотреть, развернув сначала элемент Common
Отладка и обработка ошибок

157

Language Runtime Exceptions, а затем элемент System. В открывшемся списке можно обнаружить исключительную ситуацию Systen.IndexOutOfRangeException, которую мы использовали ранее.

Любая исключительная ситуация может быть настроена с помощью переключателей, расположенных в нижней части окна Exceptions. Большинство исключительных ситуаций по умолчанию имеют установку Use parent setting (использовать установку более высокого уровня); это означает, что для них применяются опции уровня всей категории (они полностью совпадают с изображенными на вышеприведенном рисунке). Первая группа переключателей, When the exception Is thrown (когда создалась исключительная ситуация), может использоваться для перехода в отладчик даже в том случае, если исключительная ситуация уже обработана. Вторая группа позволяет игнорировать необрабатываемые исключительные ситуации независимо от того, к каким последствиям это может привести.

В большинстве случаев установки по умолчанию нас вполне устраивают.

Замечания по поводу обработки исключительных ситуаций

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

Также необходимо помнить, что мы можем создавать исключительные ситуации непосредственно из блоков catch либо способом, использованным в предыдущем примере, либо просто с помощью выражения:

throw;

Это выражение приведет к тому, что прерывание, уже обработанное блоком catch, будет сгенерировано повторно.

Если исключительная ситуация будет создана с помощью throw, то она будет обрабатываться не текущей конструкцией try.. .cetch.. .finally, а конструкцией более высокого уровня (хотя блок finally вложенной конструкции все равно выполнится).

Если, например, внести следующие изменения в блок try.. .catch.. .finally, расположенный В функции ThrowException ():

try

(

Console.WriteLine("ThrowException(\'nested index\") ' +
Предыдущая << 1 .. 72 73 74 75 76 77 < 78 > 79 80 81 82 83 84 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.