Язык программирования C++. Вводный курс


Использование исключений - часть 4


/p>

}

(Детально обработка исключительных ситуаций рассматривается в главах 11 и 19.)

Упражнение 2.18

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

int *alloc_and_init (string file_name)

{

  ifstream infile (file_name)

  int elem_cnt;

  infile >> elem_cnt;

  int *pi = allocate_array(elem_cnt);

 

  int elem;

  int index=0;

  while (cin >> elem)

    pi[index++] = elem;

 

  sort_array(pi,elem_cnt);

  register_data(pi);

 

  return pi;

}

Упражнение 2.19

В предыдущем примере вызываемые функции allocate_array(), sort_array() и register_data()

могут возбуждать исключения типов noMem, int и string соответственно. Перепишите функцию alloc_and_init(), вставив соответствующие блоки try и catch для обработки этих исключений. Пусть обработчики просто выводят в cerr сообщение об ошибке.

Упражнение 2.20

Усовершенствуйте функцию alloc_and_init()

так, чтобы она сама возбуждала исключение в случае возникновения всех возможных ошибок (это могут быть исключения, относящиеся к вызываемым функциям allocate_array(), sort_array() и register_data() и какими-то еще операторами внутри функции alloc_and_init()). Пусть это исключение имеет тип string и строка, передаваемая обработчику, содержит описание ошибки.




Начало  Назад  Вперед



Книжный магазин