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

  • System.DivideByZeroException

  • Обработка исключений и условные конструкции

  • обработка исключений. Обработка исключительных ситуаций. Обработка исключительных ситуаций Конструкция try catch finally


    Скачать 1.13 Mb.
    НазваниеОбработка исключительных ситуаций Конструкция try catch finally
    Анкоробработка исключений
    Дата19.10.2022
    Размер1.13 Mb.
    Формат файлаpptx
    Имя файлаОбработка исключительных ситуаций.pptx
    ТипДокументы
    #741744

    Обработка исключительных ситуаций

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

    Иногда при выполнении программы возникают ошибки, которые трудно предусмотреть или предвидеть, а иногда и вовсе невозможно.

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

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

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

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

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

    В этом окошке мы видим, что возникло исключение, которое представляет тип System.DivideByZeroException, то есть попытка деления на ноль. С помощью пункта View Details можно посомтреть более детальную информацию об исключении.

    И в этом случае единственное, что нам остается, это завершить выполнение программы.

    int y = x / 0;

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

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

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

    Обработка исключений и условные конструкции

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

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


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