Здравствуйте, 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 мин.