Объектно-ориентированный язык программирования С++ в примерах. Сивохин А.В. - 66 стр.

UptoLike

Составители: 

3.3.Обработка ошибок в базовых структурах данных
При обнаружении ошибки во время обработки той или иной ба-
зовой структуры возможны следующие действия:
а)возврат пользователю недопустимого значения;
б)возврат пользователю дополнительного значения состоя-
ния;
в)вызов стандартной функции обработки ошибок для базовых
структур;
г)вызов функции обработки ошибок,поставляемой пользова-
телем.
Для небольших программ выбор такого действия зависит от
вкусов разработчика,так как все эти варианты эквивалентны.
При разработке мощных и гибких универсальных средств обра-
ботки структур данных первые два подхода непригодны,так как
трудно идентифицировать недопустимые значения или реагиро-
вать на возникающие состояния.Последние два подхода прием-
лемы и их можно сделать почти эквивалентными,если задавать
не саму функцию,а указатель на нее.Это позволит разработчику
такого средства,как циклический односвязаный список slist
предоставить функцию ошибок, действующую по умолчанию,и при
этом программистам,которые будут использовать списки,будет
легко задавать свои собственные функции ошибок, когда нуж-
но,и там,где нужно.Рассмотрим,как это может быть сделано.
#include <stdlib.h> /*-стандартный файл системных функций;*/
typedef void (*PFC)(char*);/*-задание типа PFC-указателя */
/* на функцию с параметром ти- */
/* па char*; */
extern PFC slist_handler; /*-описание указателя функции; */
extern PFC set_slist_handler(PFC);/*-описание функции с */
/* параметром типа PFC, */
/* которая возвращает */
/* указатель на функцию */
/* типа PFC. */
66
       3.3.Обработка ошибок в базовых структурах данных


 При обнаружении ошибки во время обработки той или иной ба-
зовой структуры возможны следующие действия:
  а)возврат пользователю недопустимого значения;
  б)возврат пользователю дополнительного значения состоя-
ния;
  в)вызов стандартной функции обработки ошибок для базовых
структур;
       г)вызов функции обработки ошибок,поставляемой пользова-
телем.
  Для    небольших программ выбор такого действия зависит от
вкусов разработчика,так как все эти варианты эквивалентны.
При разработке мощных и гибких универсальных средств обра-
ботки структур данных первые два подхода непригодны,так как
трудно идентифицировать недопустимые значения или реагиро-
вать на возникающие состояния.Последние два подхода прием-
лемы и их можно сделать почти эквивалентными,если задавать
не саму функцию,а указатель на нее.Это позволит разработчику
такого средства,как циклический односвязаный список slist
предоставить функцию ошибок, действующую по умолчанию,и при
этом программистам,которые будут использовать списки,будет
легко задавать свои собственные функции ошибок, когда нуж-
но,и там,где нужно.Рассмотрим,как это может быть сделано.


  #include  /*-стандартный файл системных функций;*/


  typedef void (*PFC)(char*);/*-задание типа PFC-указателя       */
                               /* на функцию с параметром ти- */
                               /* па char*;                      */
  extern PFC slist_handler;    /*-описание указателя функции; */
  extern PFC set_slist_handler(PFC);/*-описание функции с        */
                                      /* параметром типа PFC, */
                                      /* которая возвращает      */
                                      /* указатель на функцию */
                                      /* типа PFC.               */


                              66