Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: [c++] Восстановление типа исключения через ссылку  (Прочитано 5975 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 11-09-2009 17:15 » 

[c++] Восстановление типа исключения через ссылку

Не совсем понимаю, что за объект создается в catch при ловле базового исключения:

Код:
struct err { ... };
struct err_1 : public err { ... };

void f() try {
throw err_1();
}
catch (err& e) {
// является ли e обрезанным объектом от err_1 с типом err
// или виртуальная функция будет иметь доступ к данным определенным в err_1 ?
}

Допустим, для подсистемы ss1 создана иерархия исключений от struct ss1_err и набор функций типа
void g() throw(ss1_err,exception);
Затем пришлось перенести часть этих функций в подсистему ss2 со своей иерархией исключений ss2_err и переписывание системы функций из ss1 - не опция.

Как и с какой точностью обычно можно восстановить обработку исключений, унаследованных от ss2_er, если они проскальзывают через функцию типа:
void g() throw(ss1_err,exception); // ?
« Последнее редактирование: 14-09-2009 10:37 от Sel » Записан

1n c0de we trust
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #1 : 14-09-2009 03:35 » 

я тебя не понимаю
кстати throw(ss1_err,exception); я бы убрал, так лучше писать только в функциях которые, больше ничего другого выбросить не могут, включая использованные внутри функции вызовы других функций и других библиотек
Записан

Странно всё это....
Mayor
Специалист

ru
Offline Offline

« Ответ #2 : 26-09-2009 08:21 » 

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

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

1n c0de we trust
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #3 : 28-09-2009 06:48 » 

и снова какие-то шумы Жаль жаль
Записан

Странно всё это....
Mayor
Специалист

ru
Offline Offline

« Ответ #4 : 28-09-2009 17:08 » 

да тоже уже замечать начал, что проще получить грамотный ответ когда к вопросу код прикладываю, ибо очень неясно объясняю проблемму
Записан

1n c0de we trust
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines