Приветствую форум.
Подскажите ка, как лучше сделать. Хотелось что-то типа:
try
{
// делаем что-то
...
// если плохо, кидаем exception
if(bad)
{
throw Tralialia();
}
}
finally
{
// какие-то действия
finally_proc1();
finally_proc2();
finally_proc3();
// если был exception, то он полетит дальше
}
Понятно, что на c++ finally как бы нету, поэтому самым простым и банальным было бы решить это так:
try
{
// делаем что-то
...
// если плохо, кидаем exception
if(bad)
{
throw Tralialia();
}
}
catch(...)
{
// какие-то действия
finally_proc1();
finally_proc2();
finally_proc3();
// если был exception, то он полетит дальше
throw;
}
finally_proc1();
finally_proc2();
finally_proc3();
но это выглядит как-то криво.
И ещё, подскажите тогда, в чём принципиальное различие будет, если использовать __try и __finally? Например, в нашем же случае:
__try
{
// делаем что-то
...
// если плохо, кидаем exception
if(bad)
{
throw Tralialia();
}
}
__finally
{
// какие-то действия
finally_proc1();
finally_proc2();
finally_proc3();
// если был exception, то он полетит дальше
}
Спасибо за внимание и подсказки.