Пример 1: Ввод квартала.

 ...
  kV = 1;AnsiString tM=kV;
   for(;;)
   {
     try 
	 {
   	  kV=InputBox("Запрос...", "Введите номер квартала (1-4):", tM);
	  if((StrToInt(kV)<5)&&(StrToInt(kV)>0))break;
	  continue;
	 }
   	 catch (EConvertError* exc)
	 {
	  continue;
	 }
   }
 ...

В данном примере производится ввод номера квартала при помощи диалогового окна, которое возвращает строку введеную пользователем. Программа отрабатывает нормально, если пользователь ввел значения 1 - 4, если же были введены не числовые символы, а строковые символы то происходит "исключительная ситуация" во время приобразования строки в число при помощи функции StrToInt(). Данная ситуация вызывает исключения типа EConvertError - ошибка преобразования данных. В блоке catch производится возврат в начало бесконечного цикла и операция ввода повторяется заново и это продолжается до тех пор пока пользователь не введет нужное значение.

- Содержание -

Пример 2: Открытие файла.

void open_file(void)
{
   FILE *fp;
   char *fname = "MY_DOC.TXT";
   fp = fopen(fname, "r");
   if(fp==NULL)
   	  throw file_err(fname, "r");
   ...
}

class file_err
{
//объявление элеменотов класса
public:
	char file [255];
	char mode [10];
	f_error(char *f, char *m)
	{
		strcpy(file, f);
		strcpy(mode, m);
	}
}

try
{
   open_file();//функция открытия файла
   run_program();//Функция запуска алгоритма
}
catch (file_err f_error)
{
   close_file();
   printf("Ошибка при открытии файла %s в режиме %s.",f_error.file, f_error.mode);
   exit(1);// выход из программы
}

В этом примере в блоке инструкции try выполняются две функции: открытие файла, запуск алгоритма. Если при выполнение функции open_file произойдет ошибка открытия файла, то управление передается инструкции throw, которая вызывает конструкцию file_err для создания объкта исключения. Объкт исключения file_err будетзатем должным образом обработан в соответствующем блоке инструкции catch, после чего выполнение программы завершится.

- Содержание -