Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Функции unexpected(). По умолчанию функция unexpected() вызывает другую





Предопределенную функцию terminate(). Функция terminate() вызывается также,

Если исключение заявлено, но не обработано или если средства обработки

Исключений обнаружили разрушение стека.

Прототипы функций terminate() и unexpected() содержатся в заголовочном

Файле except.h. По умолчанию функция terminate() просто завершает программу,

Вызывая функцию abort(). Однако существует возможность установить

Собственные функции terminate() и unexpected(), используя set_terminate() и

set_unexpected() соответственно [2].

Инкапсуляция и возможность подмены реакции на необработанное или

Неожиданное исключение оказывается весьма полезной при интегрировании

Системы в новую среду. Например, при переносе несетевого приложения в

Распределенную вычислительную среду необходимо позаботиться об обработке

Сетевых исключений. Иногда проблему можно решить, переопределив

Функцию unexpected().

Рассмотрим предложенный в [1] способ адаптации некоторой функции g()

К использованию в сети. Во-первых, определим класс, позволяющий

Манипулировать значением функции unexpected() как ресурсом, согласно

Рассмотренному выше приему управления ресурсами путем инициализации

локальных переменных:

#include <except.h>

class STC {

Unexpected_function old;

public:

STC(unexpected_function f) { old = set_unexpected(f); }

~STC() { set_unexpected(old); }

};

Тип unexpected_function и прототип функции set_unexpected() описаны в

заголовочном файле except.h следующим образом:

typedef void(_RTLENTRY * unexpected_function) ();

Unexpected_function _RTLENTRY set_unexpected(unexpected_function);

Здесь используется макрос _RTLENTRY, определяющий правила вызова,

Используемые стандартной библиотекой исполняющей системы (Standard Runtime

Library) [2].

Date: 2015-12-12; view: 484; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию