Составители:
Рубрика:
ременной или объектом и используется для передачи информации об исключении
его обработчику.
• Отыскивается соответствующий обработчик исключения и ему передается управле-
ние.
• Если обработчик исключения не найден, вызывается стандартная функция terminate,
которая вызывает функцию abort, аварийно завершающую текущий процесс. Можно
установить собственную функцию завершения процесса.
Ключевое слово try служит для обозначения контролируемого блока - кода, в кото-
ром может генерироваться исключение. Блок заключается в фигурные скобки:
try
{
...
}
Все функции, прямо или косвенно вызываемые из try-блока, также считаются ему
принадлежащими.
Генерация (порождение) исключения происходит по ключевому слову throw, ко-
торое употребляется либо с параметром, либо без него:
throw [ выражение ];
Тип выражения, стоящего после throw, определяет тип порождаемого исключения.
При генерации исключения выполнение текущего блока прекращается, и происходит
поиск соответствующего обработчика и передача ему управления. Как правило, исклю-
чение генерируется не непосредственно в try-блоке, а в функциях, прямо или косвенно в
него вложенных.
Не всегда исключение, возникшее во внутреннем блоке, может быть сразу пра-
вильно обработано. В этом случае используются вложенные контролируемые блоки, и
исключение передается на более высокий уровень с помощью ключевого слова throw без
параметров.
Обработчики исключений начинаются с ключевого слова catch, за которым в скоб-
ках следует тип обрабатываемого исключения. Они должны располагаться непосредст-
венно за try-блоком. Можно записать один или несколько обработчиков в соответствии с
типами обрабатываемых исключений. Синтаксис обработчиков напоминает определение
функции с одним параметром - типом исключения. Существует три формы записи:
catch(тип имя){ ... /* тело обработчика */ }
catch(тип){ ... /* тело обработчика */ }
catch(...){ ... /* тело обработчика */ }
Первая форма применяется, когда имя параметра используется в теле обработчика
для выполнения каких-либо действий - например, вывода информации об исключении.
Вторая форма не предполагает использования информации об исключении, играет роль
только его тип. Многоточие вместо параметра обозначает, что обработчик перехватыва-
ет все исключения. Так как обработчики просматриваются в том порядке, в котором они
записаны, обработчик третьего типа следует помещать после всех остальных. Пример:
catch(int i)
{
... // Обработка исключений типа int
}
catch(const char *)
105
ременной или объектом и используется для передачи информации об исключении
его обработчику.
• Отыскивается соответствующий обработчик исключения и ему передается управле-
ние.
• Если обработчик исключения не найден, вызывается стандартная функция terminate,
которая вызывает функцию abort, аварийно завершающую текущий процесс. Можно
установить собственную функцию завершения процесса.
Ключевое слово try служит для обозначения контролируемого блока - кода, в кото-
ром может генерироваться исключение. Блок заключается в фигурные скобки:
try
{
...
}
Все функции, прямо или косвенно вызываемые из try-блока, также считаются ему
принадлежащими.
Генерация (порождение) исключения происходит по ключевому слову throw, ко-
торое употребляется либо с параметром, либо без него:
throw [ выражение ];
Тип выражения, стоящего после throw, определяет тип порождаемого исключения.
При генерации исключения выполнение текущего блока прекращается, и происходит
поиск соответствующего обработчика и передача ему управления. Как правило, исклю-
чение генерируется не непосредственно в try-блоке, а в функциях, прямо или косвенно в
него вложенных.
Не всегда исключение, возникшее во внутреннем блоке, может быть сразу пра-
вильно обработано. В этом случае используются вложенные контролируемые блоки, и
исключение передается на более высокий уровень с помощью ключевого слова throw без
параметров.
Обработчики исключений начинаются с ключевого слова catch, за которым в скоб-
ках следует тип обрабатываемого исключения. Они должны располагаться непосредст-
венно за try-блоком. Можно записать один или несколько обработчиков в соответствии с
типами обрабатываемых исключений. Синтаксис обработчиков напоминает определение
функции с одним параметром - типом исключения. Существует три формы записи:
catch(тип имя){ ... /* тело обработчика */ }
catch(тип){ ... /* тело обработчика */ }
catch(...){ ... /* тело обработчика */ }
Первая форма применяется, когда имя параметра используется в теле обработчика
для выполнения каких-либо действий - например, вывода информации об исключении.
Вторая форма не предполагает использования информации об исключении, играет роль
только его тип. Многоточие вместо параметра обозначает, что обработчик перехватыва-
ет все исключения. Так как обработчики просматриваются в том порядке, в котором они
записаны, обработчик третьего типа следует помещать после всех остальных. Пример:
catch(int i)
{
... // Обработка исключений типа int
}
catch(const char *)
105
Страницы
- « первая
- ‹ предыдущая
- …
- 103
- 104
- 105
- 106
- 107
- …
- следующая ›
- последняя »
