![]() |
|
|
![]()
|
|
| HappyLife |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
Доброго времени суток уважаемые форумчане.
Объясните пожалуйста В чем заключается глубокий филосовский смысл в ключевом слове __finally Вот два разных кода.
И этот.
Результат один и тот же. Это сообщение отредактировал(а) HappyLife - 30.11.2007, 11:52 |
||||
|
|||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 13 Всего: 116 |
Help-ы не читаешь демонстративно?
|
|||
|
||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 9 Всего: 23 |
[offtop]
volvo877, у меня такое впечатление складывается, что люди иногда (местами даже очень) зразу лезут на форум задавать вопросы, несмотря в справку, неища в гугле или на самом форуме, на самые примитивые темы и начисто игнорят пункты 1 и 2 с правил форума [/offtop] |
|||
|
||||
| Vyacheslav |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Естественно тот же, поскольку таким образом подобран пример. Для _finally нет работы если иcходить из того, что в любом случае обработка исключения будет проводиться по месту. Вся проблема в том, что такой взгляд весьма своеобразен и пропагандируется Microsoft. Если же предположить, что обработка исключения должна производится извне ( например есть централизованный обработчик ошибок, то твой код будет выглядеть следующим образом
и
Правда в С++ можно относительно легко обойтись без __finally используя принцип гардов( GUARD). Если ситуация со Sleep встречается довольно часто, то может быть применено решение
В результате получим
-------------------- С уважением, Вячеслав Ермолаев |
||||||||
|
|||||||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
Vyacheslav,
Спасибо вам огромнейшее. |
|||
|
||||
| ksili |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Я читал где-то статью про структурную обработку исключений (SEH). А может это была и глава из книги. Так вот про __finally там говорилось, что оно для более удобной финализации функций. То есть допустим в функции есть такие действия, которые должны быть обязательно выполнены, вне зависимости от корректности завершения функции. Такими дйствиями могут быть например освобождение выделенной в начале функции памяти или запись в лог. Проблема в том, что в фукции может быть много return'ов. Так вот, чтобы не писать так:
Можно воспользоваться __finally:
То есть запись получается короче, и получаем 100% уверенность, что память освободится. Это можно использовать даже не для обработки исключений. Это сообщение отредактировал(а) ksili - 4.12.2007, 14:19 -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
||||
|
|||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
А можно воспользовать auto_ptr или другими подобными конcтрукциями. Поэтому спор о целесобразности __finally попрежнему стоит на повестке дня -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
я где-то читал что лучше не смешивать использование обработки исключений в стили С++ (try catch) и расширения M$ (_try _except _finally).
В программе на С++ все исключения должны обрабатываться как С++ исключения. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |