Шаг 13.
Глобальные переменные, относящиеся к исключениям

    На этом шаге мы рассмотрим использование некоторых глобальных переменных, которые можно применять при обработке исключений.

    Перечислим переменные, которые можно использовать при обработке исключений:

__throwExceptionName
содержит имя типа (класса) последнего исключения, порожденного программой;
__throwFileName
содержит имя файла с исходным текстом программы, в котором было порождено последнее исключение;
__throwLineNumber
содержит номер строки в исходном файле, в которой создано порождение исключения.

    Эти переменные определяются в файле except.h следующим образом:

    extern char  * __throwExceptionName ;
    extern char  * __throwFileName;
    extern unsigned __throwLineNumber;

    Следующая программа демонстрирует возможности применения перечисленных глобальных переменных:

//EXC13_1.СРР - Использование глобальных переменных
//__throwExceptionName, __throwFileName и __throwLineNumber.
#include <except.h>    // Описание переменных __throwXXXX.
#include <iostream.h>  // Описание потоков ввода-вывода.
class A	// Определяем класс A
{ 
  public:
    void print() // Функция печати сведений об исключении. 
      { 
         cout << "Обнаружено исключение ";
         cout << __throwExceptionName;
         cout <<" в строке " <<	__throwLineNumber;
         cout <<" файла '" << __throwFileName << "' ";
         cout <<endl;
      }
}; 
class B: public A {}; // Класс В порождается из A.
class C: public A {}; // Класс C порождается из A.
C _c;	// Создан объект класса C.
void f() // Функция может порождать любые исключения.
{ 
  try
  {  // Формируем исключение (объект  класса C): 
     throw(_c);
  }
  catch (B X) // Здесь обрабатываются исключения типа B.
    { X.print(); } 
}
void main () 
{ 
  try 
   { f(); }   // Контролируемый блок.
  // Обрабатываются исключения типа A
  // (и порожденных от него):
  catch (A X)
    {  X.print();  }; // Обнаружено исключение.
}
Текст этой программы можно взять здесь.

    Результат выполнения программы:

   Обнаружено исключение С в строке 24  файла 'EXC13_1.СРР'

    Комментарии в тексте программы достаточно подробно описывают ее особенности. В выводимом на экран результате используются значения глобальных переменных.


    Замечание. Обратите внимание, что указанные результаты получаются при установки опции Enable Exception Location Information. Для того, чтобы ее установить нужно выполнить пункт меню Options | Project, а дальше выбрать те пункты, которые указаны на рисунке 1:


Рис.1. Установка параметра

    Назначение других опций описано на шаге 17.


    На следующем шаге мы рассмотрим использование конструкторов и деструкторов в исключениях.




Предыдущий шаг Содержание Следующий шаг