Это не только трудоемкий, но и чреватый ошибками процесс. Обработка исключительных ситуаций рационализирует весь процесс обработки ошибок, позволяя определить в программе блок кода, называемый
Обработка исключительных ситуаций важна еще и потому, что в C# определены стандартные исключения для типичных программных ошибок, например деление на нуль или выход индекса за границы массива.
исключительных ситуаций. Ведь в конечном счете для успешного программирования на C# необходимо научиться умело пользоваться подсистемой обработки исключительных ситуаций.
Класс System.Exception
В C# исключения представлены в виде классов. Все классы исключений должны быть производными от встроенного в C# класса Exception
, являющегося частью пространства имен System. Следовательно, все исключения являются подклассами класса Exception
.
К числу самых важных подклассов Exception
относится класс SystemException
. Именно от этого класса являются производными все исключения, генерируемые исполняющей системой C# (т.е. системой CLR). Класс SystemException
ничего не добавляет к классу Exception
, а просто определяет вершину иерархии стандартных исключений.
В среде .NET Framework определено несколько встроенных исключений, являющихся производными от класса SystemException
. Например, при попытке выполнить деление на нуль генерируется исключение DivideByZeroException
. Как будет показано далее в этой главе, в C# можно создавать собственные классы исключений, производные от класса Exception
.
Основы обработки исключительных ситуаций
Обработка исключительных ситуаций в C# организуется с помощью четырех ключевых слов: try, catch, throw и finally
. Они образуют взаимосвязанную подсистему, в которой применение одного из ключевых слов подразумевает применение другого. На протяжении всей этой главы назначение и применение каждого из упомянутых выше ключевых слов будет рассмотрено во всех подробностях. Но прежде необходимо дать общее представление о роли каждого из них в обработке исключительных ситуаций. Поэтому ниже кратко описан принцип их действия.
Операторы программы, которые требуется контролировать на появление исключений, заключаются в блок try
. Если внутри блока try
возникает исключительная ситуация, catch
. Исключения, возникающие на уровне системы, генерируются исполняющей системой автоматически. А для генерирования исключений вручную служит ключевое слово throw
. Любой код, который должен быть непременно выполнен после выхода из блока try
, помещается в блок finally
.
Основу обработки исключительных ситуаций в C# составляет пара ключевых слов try и catch. Эти ключевые слова действуют совместно и не могут быть использованы порознь. Ниже приведена общая форма определения блоков try/catch
для обработки исключительных ситуаций:
try {
// Блок кода, проверяемый на наличие ошибок.
} catch
// Обработчик исключения типа
catch (
// Обработчик исключения типа
где
На самом деле указывать переменную