scope(failure) and scope(success) - вопросы применения
От: niXman Ниоткуда https://github.com/niXman
Дата: 12.01.14 17:19
Оценка:
приветствую!

собственно я использую нечто подобное, в более корявом варианте(чего тут скрывать?)
MY_TRY(exception_is_thrown)
   ...
   some code placed here
   ...
MY_CATCH(exception_is_thrown)

if ( exception_is_thrown ) {
   ...
   something
   ...
} else {
   ...
   something else
   ...
}


вопрос в том, в чем заключаются преимущества использования такой
Автор: Evgeny.Panasyuk
Дата: 27.09.12
реализации? (кроме эстетических)
(всю темы по указанной ссылке не читал, увы)

спасибо.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: scope(failure) and scope(success) - вопросы применения
От: Evgeny.Panasyuk Россия  
Дата: 12.01.14 20:24
Оценка:
Здравствуйте, niXman, Вы писали:

X>вопрос в том, в чем заключаются преимущества использования такой
Автор: Evgeny.Panasyuk
Дата: 27.09.12
реализации? (кроме эстетических)


Например:
1. scope(failure/success/exit) выполняются при любом выходе из scope — return, break, continue, etc.
2. Линейная композиция:
scope(failure) { rollback1(); };
scope(success) { commit1(); };
RAII action1;
scope(failure) { rollback2(); };
scope(success) { commit2(); };
RAII action2;
scope(failure) { rollback3(); };
scope(success) { commit3(); };
RAII action3;
На try-catch аналогичная композиция будет вложенной:
try
{
    RAII action1;
    try
    {
        RAII action2;
        try
        {
            RAII action3;
        }
        catch(...)
        {
            failure3();
            throw;
        }
        commit3();
    }
    catch(...)
    {
        failure2();
        throw;
    }
    commit2();
}
catch(...)
{
    failure1();
    throw;
}
commit1();


X>(всю темы по указанной ссылке не читал, увы)


Вот тут есть видео — первые ~20 мин.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.