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

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

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


WWW
« : 05-10-2004 16:19 » 

Есть такая конструкция:
Код:
        try{
                try{
                }
                catch(EIBError *CatchedIBError){
                        return;
                }
                Something();
        }
        __finally{
        }

Если возникает исключение и выполняется блок catch то не выполняется __finally, а если удрать return из catch то выполняется Something(); даже в случае исключения. Мне нужно чтобы при исключении выкидывалось из фунции предварительно выполнив catch и __finally
Как это организовать?
« Последнее редактирование: 01-12-2007 17:19 от Алексей1153++ » Записан

Странно всё это....
Mfcer__
Команда клуба

ru
Offline Offline

« Ответ #1 : 05-10-2004 22:21 » 

не уверен
но может в catch'е вызвать throw  :?
Записан
Anchorite
Гость
« Ответ #2 : 06-10-2004 10:29 » 

Определись, что ты используешь - исключения С++ или SEH из Windows.
Записан
Антон (LogRus)
Глобальный модератор

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


WWW
« Ответ #3 : 06-10-2004 11:26 » 

Что за SEH?
Записан

Странно всё это....
Anchorite
Гость
« Ответ #4 : 11-10-2004 20:10 » 

SEH - structured exception handling. Это обработка исключений встроенная Microsoft в свои компиляторы. Ее не следует путать с  обработкай исключений С++.

А в приведенном тобой коде именно такая путанница и получилась:
try и catch - это из С++, а __finally из SEH.

По этому поводу есть хорошая информация в книге Джеффри Рихтера "Windows для профессионалов". В оригинале она называется "Programming Application for Microsoft Windows".

Возможно найдешь ее на этом сайте.
Записан
ixania
Гость
« Ответ #5 : 12-10-2004 15:02 » 

try{
                try{
               
                      // esli gdeto vise proizoidet osibca to something ne vipolnitsa
                      Something();
               }
                catch(EIBError *CatchedIBError){
                        return;
                }
               
        }
        __finally{
        }
Записан
Mad
Гость
« Ответ #6 : 16-10-2004 12:32 » 

Цитата: LogRus
Есть такая конструкция:
Код:
       try{
                try{
                }
                catch(EIBError *CatchedIBError){
                        return;
                }
                Something();
        }
        __finally{
        }

Тут у тебя вообще вложенные блоки получились, причем старший вообще catch не имеет Улыбаюсь

Цитата: LogRus
Мне нужно чтобы при исключении выкидывалось из фунции предварительно выполнив catch и __finally
Как это организовать?

Тогда сделай так:
Код:
try
{
    ...
    Somthimg();
}
catch(...)
{
    WatNeedForCatch();
}
finally
{
    WatNeedForBochTryAndCatch();
}

« Последнее редактирование: 01-12-2007 17:44 от Алексей1153++ » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines