Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа ’ 6 ОБРАБОТКА Исключительных ситуаций 1 Цель и порядок работы Цель работы изучит

Работа добавлена на сайт samzan.net:


Лабораторная работа № 6

ОБРАБОТКА Исключительных ситуаций

1 Цель и порядок работы

Цель работы - изучить операторы, используемые при обработке исключительных ситуаций, возникающих во время выполнения вычислительных процессов, получить практические навыки в составлении программ.

Порядок выполнения работы:

  •  ознакомиться с описанием лабораторной работы;
  •  получить задание у преподавателя по вариантам;
  •  написать программу, ввести программу, отладить и решить ее на ЭВМ;
  •  оформить отчет.

2 Общие сведения

Исключительная ситуация (или исключение) - это ошибка, которая возникает во время выполнения программы. Используя С#-подсистему обработки исключительных ситуаций, с такими ошибками можно справляться. В С# эта подсистема включает в себя усовершенствованные методы, используемые в языках C++ и Java. Преимущество подсистемы обработки исключений состоит в автоматизации создания большей части кода, который ранее необходимо было вводить в программы "вручную". Обработка исключений упрощает "работу над ошибками", позволяя в программах определять блок кода, именуемый обработчиком исключении, который будет автоматически выполняться при возникновении определенной ошибки. В этом случае не обязательно проверять результат выполнения каждой конкретной операции или метода вручную. Если ошибка возникнет, ее должным образом обработает обработчик исключений.

Еще одним преимуществом обработки исключительных ситуаций в С# является определение стандартных исключений для таких распространенных программных ошибок, как деление на нуль или попадание вне диапазона определения индекса. Чтобы отреагировать на возникновение таких ошибок, программа должна отслеживать и обрабатывать эти исключения. Без знания возможностей С#-подсистемы обработки исключений успешное программирование на С# попросту невозможно.

В С# исключения представляются классами. Все классы исключений должны быть выведены из встроенного класса исключений Exception, который является частью пространства имен System. Таким образом, все исключения - подклассы класса Exception.

Программные инструкции, которые нужно проконтролировать на предмет исключений, помещаются в try-блок. Если исключение возникает в этом блоке, оно дает знать о себе выбросом определенного рода информации. Это выброшенное исключение может быть перехвачено программным путем с помощью catch-блока и обработано соответствующим образом. Системные исключения автоматически генерируются С#-системой динамического управления. Чтобы сгенерировать исключение вручную, используется ключевое слово throw. Любой код, который должен быть обязательно выполнен при выходе из try-блока, помещается в блок finally.

Ядром обработки исключений являются блоки try и catch. Эти ключевые слова работают "в одной связке"; формат записи try/catch-блоков обработки исключений имеет следующий вид:

try {

// Блок кода, подлежащий проверке на наличие ошибок.

}

catch (ExcepTypel exOb) {

// Обработчик для исключения типа ExcepTypel

}

catch (ExcepType2 exOb) {

// Обработчик для исключения типа ЕхсерТуре2

}

Здесь ЕхсерТуре - это тип сгенерированного исключения. После "выброса" исключение перехватывается соответствующей инструкцией catch, которая его обрабатывает. Как видно из формата записи try/catch-блоков, с try-блоком может быть связана не одна, а несколько catch-инструкций. Какая именно из них будет выполнена, определит тип исключения. Другими словами, будет выполнена та catch-инструкция, тип исключения которой совпадает с типом сгенерированного исключения (а все остальные будут проигнорированы). После перехвата исключения параметр exOb примет его значение.

Задавать параметр exOb необязательно. Если обработчику исключения не нужен доступ к объекту исключения (как это часто бывает), в задании параметра exOb нет необходимости. Поэтому во многих примерах этой главы параметр exOb не задан.

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

Ниже представлены наиболее часто используемые исключения, определенные в пространстве имен System:

Исключение

Значение

ArrayTypeMismatchException

Тип сохраняемого значения несовместим с типом массива

DivideByZeroException

Попытка деления на нуль

IndexOutOfRangeException

Индекс массива оказался вне диапазона

InvalidCastException

Неверно выполнено динамическое приведение типов

OutofMemoryException

Недостаточный объем свободной памяти

OverflowException

Имеет место арифметическое переполнение

NullReferenceException

Попытка использовать нулевую ссылку

StackoverflowException

Переполнение стека

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

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

 Пример:

using System;

namespace ConsoleApplication {

 class OurClass {

   static void Main(string[] args) {

 float num1 = 1, num2 = 2, summarize, multiply, sub, divide = 0;

 Console.Write("Введите первое число:");

 try { num1 = float.Parse(Console.ReadLine()); }

 catch {

  Console.WriteLine("Неправильный формат числа!\n"+

       "В качестве значения первого числа будет 1");

}

Console.Write("Введите второе число:");

 try { num2 = float.Parse(Console.ReadLine()); }

     catch {

  Console.WriteLine("Неправильный формат числа!\n"+

       "В качестве значения второго числа будет 2");

 }

summarize = num1 + num2; multiply = num1 * num2; sub = num1 - num2;

 try { divide = num1 / num2; }

 catch(DivideByZeroException) {

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

 }

     Console.WriteLine(

     "\n" + num1 + " + " + num2 + " = " + summarize +

"\n" + num1 + " * " + num2 + " = " + multiply +

"\n" + num1 + " - " + num2 + " = " + sub +

"\n" + num1 + " / " + num2 + " = " + divide);

Console.Write("\nДля выхода из программы нажмите [Enter]:");

     string anykey = Console.ReadLine();

   }

 }

}

3. Задание для самостоятельной pаботы

Для своего варианта задания лабораторной работы № 2 оптимизировать программу, включив в нее обработку исключительных ситуаций: ввода данных, операции деления и др.

  1.  Содержание отчета

4.1. Титульный лист.

4.2. Краткое теоретическое описание.

4.3. Задание на лабораторную работу, включающее математическую формулировку задачи.

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

Литература

  1.  Малыхина М.П. «Программирование на языке высокого уровня C#». Курс лекций.
  2.  Павловская Т.А. «C#. Программирование на языке высокого уровня». Учебник для вузов.- СПб.: Питер, 2009.-432 с.
  3.  Фаронов В.В. создание приложений с помощью C#. Руководство программиста.  «ЭКСМО», 2008. –576 с.
  4.  Герберт Шилдт. 2.0. Серия «Полное руководство». Пер. с англ. – М.: «Эком Паблишерз», 2007. –976 с.
  5.  Фролов А.В.,. Фролов Г.В. Язык C#. Самоучитель. – М.: ДИАЛОГ-МИФИ, 2003.

PAGE   \* MERGEFORMAT 65




1. Тема 600;ВРЕМЯ0;KT3;MT01; S-При генерализованном пародонтите осложненном дефектами зубного ряда I класса по Ке
2. темах правил нечітких продукцій
3. Мистическое Сектантство в Российской провинции в 19- 20 веке.html
4. Дійсно ніхто не вибере життя без друзів навіть маючи всі інші блага- вважають же ж що навіть у багатіїв і в
5. Расследование и учет хронических профессиональных заболеваний и отравлений
6. по расчетам составила 335 трлн руб
7. Chemist synthesizing ll the orgnic substnces in plnts
8. Утверждаю Зав1
9. БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ Факультет Лесохозяйственный Кафедра Ле
10. Изумрудная скрижаль около 3000 г
11. Конституционное право как наука
12. 12 марта 2014 года
13. ІМ Козловська М
14. Сожги меня. Пусть догорают буквы страницы.html
15. особая форма человеческой психики стоящая отдельно от остальных психических процессов и вместе с тем заним
16. Distnce humn flights pper. The modern ge of vition begn with the first untethered humn lighterthnir flight on November 21 1783 in hot ir blloon designed by the Montgolfier brothers
17. Устав муниципального образования- порядок принятия регистрация основные требования к содержанию Устав
18. ТЕМА- УПРАВЛЕНИЕ ПРОЕКТОМ Руководитель- Устинов А
19. по теме Учет материалов.html
20. ПРАКТИКУМ ПО ОХРАНЕ ТРУДА ДЛЯ СТУДЕНТОВ УЧРЕЖДЕНИЙ ОБЕСПЕЧИВАЮЩИХ ПОЛУЧЕНИЕ ВЫСШЕГО СЕЛЬСКОХОЗЯЙСТ