Возражение против исключений

Один из моих друзей поднял мне эту проблему. Я застрял, потому что не разбираюсь в исключениях. Имейте в виду, что мы оба работаем в рабочей среде, где мы используем C ++, но обрабатываем ошибки в традициях C. Его проблема была примерно такой:

Функция A вызывает B , который, в свою очередь, вызывает C . Исключение создается из C , а блок перехвата для этого исключения находится в A . Что происходит с ресурсами, полученными в B до вызова C ? Как мы их убираем? Мой ответ - использовать RAII. Но даже когда я сказал это, я знал, что это не сработает. У нас есть огромные кодовые базы, написанные в режиме C. Нигде в коде я не видел автоматических указателей и тому подобного. Ресурсы не обязательно заключены в классы. Даже если они есть, деструкторы в большинстве случаев оставляются на усмотрение компилятора. Короче говоря, все делается вручную.

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

8
задан Dan 11 February 2011 в 16:27
поделиться