Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Rabochy_stol / 10 исключения в с++

.docx
Скачиваний:
21
Добавлен:
31.05.2015
Размер:
16.19 Кб
Скачать

10 исключения

язык С представляет программисту очень ограниченные возможности обработки исключений, возникших при работе программы. В этом отношении С++ намного развитее С. Здесь у программиста существенно большие возможности по непосредственной обработке исключений. Комитет по разработке стандартов С++ предоставил очень простую, но мощную форму обработки исключений.

Try-catch-throw

  • try (пытаться) - начало блока исключений;

  • catch (поймать) - начало блока, "ловящего" исключение;

  • throw (бросить) - ключевое слово, "создающее" ("возбуждающее") исключение.

Создание" исключений

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

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

Операторы throw без параметров

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

try

{

throw;

// ни один оператор, следующий далее (до закрывающей скобки)

// выполнен не будет

}

catch(...)

{

cout << "Исключение!" << endl;

}

Такой метод может применяться в случаях, когда не нужно передавать никаких данных в блок catch.

Соседние файлы в папке Rabochy_stol