К числу самых важных подклассовExceptionотносится классSystemException.Именно от этого класса являются производными все исключения, генерируемые исполняющей системой C# (т.е. системой CLR). КлассSystemExceptionничего не добавляет к классуException,а просто определяет вершину иерархии стандартных исключений.

В среде .NET Framework определено несколько встроенных исключений, являющихся производными от классаSystemException.Например, при попытке выполнить деление на нуль генерируется исключениеDivideByZeroException.Как будет показано далее в этой главе, в C# можно создавать собственные классы исключений, производные от классаException.

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

Обработка исключительных ситуаций в C# организуется с помощью четырех ключевых слов:try, catch, throwиfinally.Они образуют взаимосвязанную подсистему, в которой применение одного из ключевых слов подразумевает применение другого. На протяжении всей этой главы назначение и применение каждого из упомянутых выше ключевых слов будет рассмотрено во всех подробностях. Но прежде необходимо дать общее представление о роли каждого из них в обработке исключительных ситуаций. Поэтому ниже кратко описан принцип их действия.

Операторы программы, которые требуется контролировать на появление исключений, заключаются в блокtry.Если внутри блокаtryвозникает исключительная ситуация,генерируетсяисключение. Это исключение может быть перехвачено и обработано каким-нибудь рациональным способом в коде программы с помощью оператора, обозначаемого ключевым словомcatch.Исключения, возникающие на уровне системы, генерируются исполняющей системой автоматически. А для генерирования исключений вручную служит ключевое словоthrow.Любой код, который должен быть непременно выполнен после выхода из блокаtry,помещается в блокfinally.

Применение пары ключевых слов try и catch

Основу обработки исключительных ситуаций в C# составляет пара ключевых словtryиcatch.Эти ключевые слова действуют совместно и не могут быть использованы порознь. Ниже приведена общая форма определения блоковtry/catchдля обработки исключительных ситуаций:

try {

// Блок кода, проверяемый на наличие ошибок.

}catch(ExcepTypel exOb) {

// Обработчик исключения типаExcepTypel.}

catch (ЕхсерТуре2 exOb){

// Обработчик исключения типаЕхсерТуре2.}

Перейти на страницу:

Похожие книги