| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > теряется __finally при return из catch |
| Автор: MaximNR 5.7.2005, 21:09 | ||
Подскажите, а то что-то меня заклинило, есть код:
Если при записи файла возникает исключение, т.е. выполняется return false, блок __finally не выполняется. Должен блок выполняться или нет? По идее должен, но может быть есть какие-либо ограничения? Пробовал на bcb5, под рукой другой версии нет. Сейчас мучительно пытаюсь вспомнить, как я делал подобное раньше. |
| Автор: MaximNR 5.7.2005, 21:28 | ||
Что-то совсем не то, нашел 3й билдер, поставил, написал простейшую программку
В ней выводится сообщение из финалли, но эта же программа в в 5м не выводит. Я запутался окончательно. Мысли в слух: -Может быть это где-то в настройках устанавливается? -Да вряд-ли, это же стандарт. |
| Автор: chaos 6.7.2005, 07:34 |
| раз так не выходит, пойди другим путем - введи какой нибудь флажок! делой вывод о выходе из фуркции полсе __try __finally |
| Автор: MaximNR 6.7.2005, 12:27 |
| вопрос не в том как от этого избавится, а в том, что это серьезный глюк компилятора, именно компилятора, а не какой-либо библиотеки. но я на 5й билдер случайно попал, у меня дома другого нет, в 6м все нормально. |
| Автор: chaos 6.7.2005, 12:32 |
| да выкинь ты это 5 билдер, он мне столкько крови попортил |
| Автор: MaximNR 6.7.2005, 12:35 |
| Хотя сейчас в 6м проверил, тоже самое Может быть это самая структура какая-либо неправильная. Помнится в книжке некого Рихтера, не рекомендовалось так выходить из катча, но не потому что так нельзя, а потому что системе приходится делать много дополнительных действий, что бы это реализовать, например, сохранять возвращаемое функцией значение перед входом в блок, потом его восстанавливать. Если финалли внутри катча, то все прекрасно работает А может быть все же я не прав? |
| Автор: MaximNR 6.7.2005, 17:33 |
| А чего такое молчание, никто такие конструкции не использует что ли? |