Обработка исключений

Краткая теория

Оператор

throw <выражение>;

возбуждает исключение, тип и значение которого определяются <выражением>. В простейшем случае <выражение> имеет один из стандартных типов, таких как целое число (int), строка (const char*) и т.д., но чаще всего в роли исключения используется объект специального класса.

С помощью ключевого слова try в тексте программы выделяется блок операторов, исполнение которых, предположительно, может привести к исключениям. Для обработки исключений сразу после try-блока помещается один или несколько catch-блоков.

Правила обработки исключений

  • В некоторых случаях полезно поймать произвольное исключение независимо от его типа с помощью обработчика с многоточием catch(...).

    Пример 1 - Простейшая обработка исключений

    Напишите, скомпилируйте и исследуйте принцип работы программы, считающей число строк в файлах, с применением механизма обработки исключений:

    $ vim exception-1.cpp

    exception-1.cpp.png

    $ g++ exception-1.cpp -o exception-1

    Пример 2 - Обработка исключений с помощью специального класса

    Разработайте класс FileException для обработки исключений, возникающих при открытии файла:

    $ mkdir include/FileException
    $ vim include/FileException/FileException.h

    FileException.h.png

    $ vim include/FileException/FileException.cpp

    FileException.cpp.png

    Модернизируйте программу для чтения строк в файлах, используя написанный класс:

    $ vim exception-2.cpp

    exception-2.cpp.png

    $ g++ exception-2.cpp include/FileException/FileException.cpp -I include/FileException -o exception-2