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...
Пока на собственное сообщение не было ответов, его можно удалить.