- •Лабораторная работа № 5. Потоки и процессы в Microsoft Visual Studio.
- •Методы решения дифференциального уравнения
- •Лабораторная работа № 6. Динамически подключаемые библиотеки
- •6.1. Цель работы
- •6.2. Теоретические сведения
- •Лабораторная работа № 7 Обработка исключительных ситуаций в Visual c#
- •7.1. Цель работы
- •7.2. Теоретические сведения
- •1) Контролируемый блок – составной оператор, предваряемый ключе-
- •Организация удаленного взаимодействия при помощи технологии .Net
- •8.1. Цель работы
- •8.2. Теоретические сведения
Лабораторная работа № 7 Обработка исключительных ситуаций в Visual c#
7.1. Цель работы
Ознакомление с классом исключительных ситуаций Visual C# и выработ- ка навыков создания приложений, осуществляющих обработку возникающих исключительных ситуаций
7.2. Теоретические сведения
Любое взаимодействие программы с операционной системой (ОС) на предмет получения ее ресурсов (открытия файла, места в оперативной памяти и т.п.) может окончиться неудачно. Выполнение любого вычисления может окончиться делением на нуль или переполнением. Платой за надежную работу программы в таких условиях является введение многочисленных проверок, га- рантирующих надежную работу программы при возникновении внештатных ситуаций. Как правило, бывает недостаточно просто в очередной конструкции условного перехода (типа if… then) поставить оператор выхода exit, а требу- ется отменить целую последовательность действий, предшествующих некор- ректному. Код программы, осуществляющий эти действия, будет маскировать четкую структуру главного алгоритма и приводить к ухудшению читабельности программы. Выход из данной ситуации был предложен разработчиками ОС Windows NT и получил название структурной обработки исключительных си- туаций (ИС). Позднее его поддержка была введена во все ОС, а также в среды разработки программ.
Исключительная ситуация, или исключение, - это возникновение аварий- ного события, которое может порождаться некорректным использованием ап-
паратуры или неправильной работой программы, например делением на ноль или переполнением. Обычно эти события приводят к завершению программы с системным сообщением об ошибке. С# дает программисту возможность вос- становить работоспособность программы и продолжить ее выполнение. Ис- ключения С# не поддерживают обработку асинхронных событий, таких как ошибки оборудования или прерывания, например нажатия клавиш Ctrl^C. Ме- ханизм исключений предназначен только для событий, которые могут произой-
ти в результате работы программы и указываются явным образом. Исключения возникают тогда, когда некоторая часть программы не смогла сделать то, что от нее требовалось. При этом другая часть программы может сделать что-нибудь иное.
Исключения позволяют логически разделить вычислительный процесс на две части – обнаружение аварийной ситуации и ее обработку. Это важно не
только для лучшей структуризации программы. Главное то, что функция, обна- ружившая ошибку, может не знать, что предпринимать для ее исправления, а использующий эту функцию код может знать, что делать, но не уметь опреде- лить место возникновения. Это особенно актуально при использовании библио-
течных функций и программ, состоящих из многих модулей. Другое достоинст- во исключений состоит в том, что для передачи информации об ошибке в вы- зывающую функцию не требуется применять возвращаемое значение или пара- метры, поэтому заголовки функций не разрастаются.
Исключения генерирует либо среда выполнения, либо программист с по-
мощью оператора throw. Наиболее часто используемые предопределенные ис- ключительные ситуации в C# следующие:
ArithmeticException – ошибка в арифметических операциях или преобразованиях (является предком DivideByZeroException и OverFlo- wException);
ArrayTypeMismatchException – попытка сохранения в массиве элемента несовместимого типа;
DivideByZeroException – попытка деления на ноль;
FormatException – попытка передать в метод аргумент неверного формата;
IndexOutOfRangeException – индекс массива выходит за границы диапазона;
InvalidCasrException – ошибка преобразования типа;
OutOfMemoryException – недостаточно памяти для создания нового объекта;
OverFlowException – переполнение при выполнении арифметических операций;
StackOverFlowException – переполнение стека.
Все перечисленные исключения определены в пространстве имен System. Все они являются потомками класса SystemException. Исключе- ния обнаруживаются и обрабатываются оператором try, который имеет сле- дующий синтаксис:
try блок [блоки catch] [блок finally]
Отсутствовать могут либо блоки catch, либо блок finally, но не оба
одновременно. Оператор try содержит три части: