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

С# - Ватсон К.

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


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

? finally содержит блок кода, который выполняется всегда: либо после выполнения блока try, если не возникло никаких исключительных ситуаций, либо после блока catch, если производилась обработка исключительной ситуации, либо непосредственно перед тем, как приложение будет завершено из-за возникновения необрабатываемой исключительной ситуации (последнее и объясняет необходимость этого блока; в противном случае мы могли бы с тем же успехом разместить этот код просто вслед за блоком).

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

? Выполнение блока try прекращается в той точке, в которой возникла исключительная ситуация.

? Если существует блок catch, то производится проверка

на предмет тогх^ совпадает ли его параметр с типом возникшей исключительной ситуации. Если блок catch отсутствует, то выполняется блок finally (который в этом случае является обязательным).

? Если блок catch существует, но значенне его параметра

не совпадает с типом возникшей исключительной ситуации, проверка производится в других блоках catch.

? Если параметр блока catch совпадает с типом возникшей исключительной ситуации, то сначала выполняется код, содержащийся в блоке, а затем — в случае, если он присутствует.— выполняется блок finally.

? Если ни один из блоков catch не соответствует типу возникшей исключительной ситуации, то выполняется блок finally

(если он существует).

Давайте рассмотрим пример, демонстрирующий обработку исключительных ситуаций.
Отладка и обработка ошибок

153

Практикум: запись текста в окно Output

1. Создайте новое консольное приложение с именем ch07Ex02 В директории C:\BegCSharp\Chapter7.

2. Внесите следующие изменения в программу: class Classl

<

static strinaH eTypee ¦ ('none*, 'simDle*, 'index*, "nested index'); static void Main (string J] args)

(

foreach (string eType in eTypee)

(

try ¦

{

Console. WriteLine ('Kain () try block reached.*); // Line IB

Console.WriteLine(*ThrowException(\'{0)\*) called.", eType);

// Line 19

ThrowExceptionfeType);

Console.WriteLine('Mainf) try block continues.*); // Lise 21

)

catch (System.indexOutOfHangeException e) // Line 23

t

Console.WriteLine(*Hain{) System.IndexOutOfHangeException catch*

+ * block reached. Иея5ввеЛа\*(0)\**, e.Message);

)

catch П Line 29

{

Console.WriteLinet'Hoinl) general catch block reached.');

)

finally

(

>

Console.WriteLinet'Main() finally block reached.');

Console.WriteLineO;

)

Static void ThrowSxception(string exceptionType)

(

Console. WriteLine ("Ehrot*Exception(\'(0)\*) reached.*, except ionType) i

it Line 43

switch (exceptionType)

(

case 'none' :

Console.WriteLine(*Not throwing an exception.');

break; 11 Line 48

case 'simple' : . .

Console. WriteLine ('Throwing System. Exception.') ,-

throw (new System.ExceptionO) ; // Line SI

break; case 'index' i

Console. WriteLine ('Throwing System. IndexOutOfRangeExcept ion, '); eTypes[4] = 'error*; // Line 55

break; .

case 'nested index' :

try // Line 58

(

Console.WriteLine('ThrowException(\'nested index\') ' +

'try block reached.');

Console.WriteLine(*ThrowException(\'indexS*) called.*)j

ThrowException('index'); ' // Line 63

>
154

Глава 7

catch // Line ?5

t

Console.WriteLine('ThrowException(X'nested ,index\•) general•

+ * catch block reached.*);

J

finally

t

Console.WriteLine!'ThrowException(\'nested index\*) finally"

+ * block reached.') i

)

break;

> .

)

)

3. Запустите приложение (см. рис. слева).

Как это работает

У этого приложения имеется блок try в функции MainO, в котором вызывается фуИКЦИЯ ThrowException{) . Названная функция может создавать различные исключительные ситуации в зависимости от того, какой параметр используется при обращении к ней:

? ThrowException('none*) — не вызывает возникновения исключительной ситуации.

О ThrowException('simple') — вызывает возникновение общей исключительной ситуации.

? ThrowException ('index') — создает исключительную ситуацию System.IndexOutOfRangeException.

? ThrowException('nested index') —содержит СВОЙ собственный блок try, в котором располагается код, вызывающий ThrowException('index') с целью создания исключительной ситуации System.IndexOutOfRangeException,

Все эти параметры обладают типом string и хранятся ? глобальном массиве eiypes, который в функции Maino проходится в цикле —для того, чтобы функция ThrowExceptionO была вызвана по одному разу с каждым возможным значением параметра. В процессе выполнения этих итераций на консоль выводятся поясняющие сообщения.

Этот пример предоставляет прекрасную возможность использовать метод пошагового выполнения программы, с которым вы уже познакомились. Проходя по , всей программе строка за строкой, вы будете в точности понимать, каким образом они выполняются.
Предыдущая << 1 .. 70 71 72 73 74 75 < 76 > 77 78 79 80 81 82 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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