Шаг 219.
Язык программирования C#. Начала.
Обработка исключений. Принципы обработки исключений

    На этом шаге мы рассмотрим общие принципы обработки исключений.

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


Напомним, что очень краткое и поверхностное знакомство с обработкой исключений у нас состоялось ранее, на 44 шаге.

    Чтобы понять, как программа может реагировать на возникновение ошибки, имеет смысл хотя бы кратко узнать, что происходит, если случается ошибка. А происходит следующее. Если при выполнении некоторой команды возникает ошибка, то выполнение этой команды прекращается. Но не все так просто. Еще автоматически создается объект, который содержит информацию о возникшей ошибке. Саму ошибку называют исключением или исключительной ситуацией, а объект называется объектом исключения или объектом ошибки. Этот объект передается в программу для обработки. Иногда говорят, что объект исключения "вбрасывается" в программу. Далее возможны два варианта. Вариант первый: в программе предусмотрена обработка исключений. Если так, то исключение обрабатывается, и программа продолжает работу. Вариант второй: в программе не предусмотрена обработка исключительных ситуаций. В таком случае используется механизм обработки по умолчанию: выполнение программного кода прекращается, и выводится сообщение об ошибке.


Как отмечалось выше, при возникновении ошибки создается объект. Объекты, как мы знаем, создаются на основе классов. В языке C# имеется иерархия классов, каждый из которых соответствует ошибке определенного типа. При возникновении ошибки объект исключения создается на основе класса, который соответствует типу возникшей ошибки.

    Итак, мы можем научить программу реагировать на возникновение ошибки. Главное преимущество в наличии системы перехвата и обработки исключений в том, что программа не завершает работу в аварийном режиме. Хотя, откровенно говоря, есть и другие позитивные моменты. Даже больше - иногда они настолько положительны, что приходится генерировать исключения специально. Такой способ программирования мы также обсудим.

    На следующем шаге мы рассмотрим использование конструкции try-catch.




Предыдущий шаг Содержание Следующий шаг