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

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

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

__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();  }; // Обнаружено исключение.
}

Текст этой программы можно взять шаге 17.

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий