29 сент- ПР №8 - Исключительные ситуации (Exception). Исключительные ситуации (Exception)
![]()
|
Практическая работа №8 Тема: Исключительные ситуации (Exception) Цель работы: Научиться обрабатывать ожидаемые исключения происходящие в коде приложения на языке C#, познакомиться с классом Exception. Теоретические сведения: Конструкция try..catch..finally Исключения (Exceptions) это тип ошибки, которая происходит при выполнении приложения. Ошибки обычно означают появление неожиданных проблем. Тогда как исключения, обработка которых организована в коде, являются ожидаемыми, они происходят в коде приложений по различным причинам. Язык C# предоставляет разработчикам возможности для обработки таких ситуаций. Для этого в C# предназначена конструкция try...catch...finally.
При использовании блока try...catch..finally вначале выполняются все инструкции в блоке try. Если в этом блоке не возникло исключений, то после его выполнения начинает выполняться блок finally. И затем конструкция try..catch..finally завершает свою работу. Если же в блоке try вдруг возникает исключение, то обычный порядок выполнения останавливается, и среда CLR начинает искать блок catch, который может обработать данное исключение. Если нужный блок catch найден, то он выполняется, и после его завершения выполняется блок finally. Если нужный блок catch не найден, то при возникновении исключения программа аварийно завершает свое выполнение. Рассмотрим следующий пример:
В данном случае происходит деление числа на 0, что приведет к генерации исключения. И при запуске приложения в режиме отладки мы увидим в Visual Studio окошко, которое информирует об исключении.И в этом случае единственное, что нам остается, это завершить выполнение программы. Чтобы избежать подобного аварийного завершения программы, следует использовать для обработки исключений конструкцию try...catch...finally. Так, перепишем пример следующим образом:
В данном случае у нас опять же возникнет исключение в блоке try, так как мы пытаемся разделить на ноль. И дойдя до строки
выполнение программы остановится. CLR найдет блок catch и передаст управление этому блоку. После блока catch будет выполняться блок finally. Возникло исключение! Блок finally Конец программы Таким образом, программа по-прежнему не будет выполнять деление на ноль и соответственно не будет выводить результат этого деления, но теперь она не будет аварийно завершаться, а исключение будет обрабатываться в блоке catch. Следует отметить, что в этой конструкции обязателен блок try. При наличии блока catch мы можем опустить блок finally:
Индивидуальные задания: Добавьте в разработанные приложения из Практической №4 обработку исключений (к примеру Ввод символьного значения вместо числового или Деление на ноль) Контрольные вопросы? Обработка исключений и условные конструкции (метод TryParse()). Фильтры исключений в блоке Catch. Базовые свойства класса Exception. Генерирование исключительных ситуаций Throw. |