Информация об изменениях

Сообщение Re[6]: RAII && try/finalize от 14.02.2016 11:51

Изменено 14.02.2016 11:56 rg45

Здравствуйте, kr510, Вы писали:

R>>Внутири cleanup нет никакой связи с локальными объектами вызывающей фунции.

K>cleanup может быть либо лямдой, если "void play()" только один, либо методом TSomeObject.

Ну то есть, это уже не только catch, а catch плюс лямбды. Еще один шажок и приходим к тому, что лямбду можно поместить в деструктор какого-нибудь объекта, как предлагали здесь
Автор: uncommon
Дата: 14.02.16
. А там, глядишь, и придем к выводу, что решение с catch не единственное, а, возможно даже, не самое лучшее.

K>Точек куда надо вставить только 2: выход по exception и выход по успеху. Это предельно простой и надежный код.


Ну во-первых две это уже хуже, чем одна. А во-вторых, остается таки открытым вопрос, что делать в случаях, когда точек возврата больше, чем две. Например, захотели мы добавить еще один блок catch для std::exception, как быть? Нормальное же желание, нет ничего предосудительного?
Re[6]: RAII && try/finalize
Здравствуйте, kr510, Вы писали:

R>>Внутири cleanup нет никакой связи с локальными объектами вызывающей фунции.

K>cleanup может быть либо лямдой, если "void play()" только один, либо методом TSomeObject.

А можешь привести пример, как ты собираешься вызвать в блоке catch лямбду, определенную в блоке try?

И потом, это уже не просто catch, как ты предлагал изначально, а catch плюс лямбды. Еще один шажок и приходим к тому, что лямбду можно поместить в деструктор какого-нибудь объекта, как предлагали здесь
Автор: uncommon
Дата: 14.02.16
. А там, глядишь, и придем к выводу, что решение с catch не единственное, а, возможно даже, не самое лучшее.

K>Точек куда надо вставить только 2: выход по exception и выход по успеху. Это предельно простой и надежный код.


Ну во-первых две это уже хуже, чем одна. А во-вторых, остается таки открытым вопрос, что делать в случаях, когда точек возврата больше, чем две. Например, захотели мы добавить еще один блок catch для std::exception, как быть? Нормальное же желание, нет ничего предосудительного?