Поиск:

Ответ в темуСоздание новой темы Создание опроса
> теряется __finally при return из catch 
:(
    Опции темы
MaximNR
Дата 5.7.2005, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 11.5.2005

Репутация: нет
Всего: 1



Подскажите, а то что-то меня заклинило, есть код:
Код

try
    {
        try
        {
            list->SaveToFile(ffile_name);
        }
        catch(...)
        {
            return false;
        }
    }
    __finally
    {
        ShowMessage("test message finally");
    }
    return true;


Если при записи файла возникает исключение, т.е. выполняется return false, блок __finally не выполняется.
Должен блок выполняться или нет?
По идее должен, но может быть есть какие-либо ограничения?
Пробовал на bcb5, под рукой другой версии нет.
Сейчас мучительно пытаюсь вспомнить, как я делал подобное раньше.

PM   Вверх
MaximNR
Дата 5.7.2005, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 11.5.2005

Репутация: нет
Всего: 1



Что-то совсем не то, нашел 3й билдер, поставил, написал простейшую программку

Код

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
    try
    {
        try
        {
            throw Exception("ex");
        }
        catch(...)
        {
            return;
        }
    }
    __finally
    {
        ShowMessage("finally");
    }
    
}


В ней выводится сообщение из финалли, но эта же программа в в 5м не выводит.

Я запутался окончательно.

Мысли в слух:
-Может быть это где-то в настройках устанавливается?
-Да вряд-ли, это же стандарт.
PM   Вверх
chaos
Дата 6.7.2005, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 1
Всего: 44



раз так не выходит, пойди другим путем - введи какой нибудь флажок!
делой вывод о выходе из фуркции полсе __try __finally

Это сообщение отредактировал(а) chaos - 6.7.2005, 07:35
PM WWW   Вверх
MaximNR
Дата 6.7.2005, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 11.5.2005

Репутация: нет
Всего: 1



вопрос не в том как от этого избавится, а в том, что это серьезный глюк компилятора, именно компилятора, а не какой-либо библиотеки.
но я на 5й билдер случайно попал, у меня дома другого нет, в 6м все нормально.
PM   Вверх
chaos
Дата 6.7.2005, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 1
Всего: 44



да выкинь ты это 5 билдер, он мне столкько крови попортил smile
PM WWW   Вверх
MaximNR
Дата 6.7.2005, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 11.5.2005

Репутация: нет
Всего: 1



Хотя сейчас в 6м проверил, тоже самоеsmile
Может быть это самая структура какая-либо неправильная.
Помнится в книжке некого Рихтера, не рекомендовалось так выходить из катча, но не потому что так нельзя, а потому что системе приходится делать много дополнительных действий, что бы это реализовать, например, сохранять возвращаемое функцией значение перед входом в блок, потом его восстанавливать.
Если финалли внутри катча, то все прекрасно работает

А может быть все же я не прав?
PM   Вверх
MaximNR
Дата 6.7.2005, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 11.5.2005

Репутация: нет
Всего: 1



А чего такое молчание, никто такие конструкции не использует что ли?
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0713 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.