приветствую!
собственно я использую нечто подобное, в более корявом варианте(чего тут скрывать?)
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 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Здравствуйте, 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 мин.