Главная страница
Навигация по странице:

  • Теоретические сведения: Конструкция try..catch..finally Исключения

  • Индивидуальные задания

  • Контрольные вопросы

  • 29 сент- ПР №8 - Исключительные ситуации (Exception). Исключительные ситуации (Exception)


    Скачать 26.47 Kb.
    НазваниеИсключительные ситуации (Exception)
    Дата07.10.2021
    Размер26.47 Kb.
    Формат файлаdocx
    Имя файла29 сент- ПР №8 - Исключительные ситуации (Exception).docx
    ТипПрактическая работа
    #242871

    Практическая работа №8

    Тема: Исключительные ситуации (Exception)

    Цель работы: Научиться обрабатывать ожидаемые исключения происходящие в коде приложения на языке C#, познакомиться с классом Exception.

    Теоретические сведения:

    Конструкция try..catch..finally

    Исключения (Exceptions) это тип ошибки, которая происходит при выполнении приложения. Ошибки обычно означают появление неожиданных проблем. Тогда как исключения, обработка которых организована в коде, являются ожидаемыми, они происходят в коде приложений по различным причинам.

    Язык C# предоставляет разработчикам возможности для обработки таких ситуаций. Для этого в C# предназначена конструкция try...catch...finally.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    try

    {

         

    }

    catch

    {

         

    }

    finally

    {

         

    }

    При использовании блока try...catch..finally вначале выполняются все инструкции в блоке try. Если в этом блоке не возникло исключений, то после его выполнения начинает выполняться блок finally. И затем конструкция try..catch..finally завершает свою работу.

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

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

    Рассмотрим следующий пример:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    class Program

    {

        static void Main(string[] args)

        {

            int x = 5;

            int y = x / 0;

            Console.WriteLine($"Результат: {y}");

            Console.WriteLine("Конец программы");

            Console.Read();

        }

    }

    В данном случае происходит деление числа на 0, что приведет к генерации исключения. И при запуске приложения в режиме отладки мы увидим в Visual Studio окошко, которое информирует об исключении.И в этом случае единственное, что нам остается, это завершить выполнение программы.

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

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    class Program

    {

        static void Main(string[] args)

        {

            try

            {

                int x = 5;

                int y = x / 0;

                Console.WriteLine($"Результат: {y}");

            }

            catch

            {

                Console.WriteLine("Возникло исключение!");

            }

            finally

            {

                Console.WriteLine("Блок finally");

            }

            Console.WriteLine("Конец программы");

            Console.Read();

        }

    }

    В данном случае у нас опять же возникнет исключение в блоке try, так как мы пытаемся разделить на ноль. И дойдя до строки

    1

    int y = x / 0;

    выполнение программы остановится. CLR найдет блок catch и передаст управление этому блоку.

    После блока catch будет выполняться блок finally.

    Возникло исключение!

    Блок finally

    Конец программы

    Таким образом, программа по-прежнему не будет выполнять деление на ноль и соответственно не будет выводить результат этого деления, но теперь она не будет аварийно завершаться, а исключение будет обрабатываться в блоке catch.

    Следует отметить, что в этой конструкции обязателен блок try. При наличии блока catch мы можем опустить блок finally:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    try

    {

        int x = 5;

        int y = x / 0;

        Console.WriteLine($"Результат: {y}");

    }

    catch

    {

        Console.WriteLine("Возникло исключение!");

    }





    Индивидуальные задания:

    Добавьте в разработанные приложения из Практической №4 обработку исключений (к примеру Ввод символьного значения вместо числового или Деление на ноль)

    Контрольные вопросы?

    1. Обработка исключений и условные конструкции (метод TryParse()).

    2. Фильтры исключений в блоке Catch.

    3. Базовые свойства класса Exception.

    4. Генерирование исключительных ситуаций Throw.


    написать администратору сайта