try catch __finally
От: Димчанский Литва http://dimchansky.github.io/
Дата: 30.01.04 09:58
Оценка:
Приветствую форум.
Подскажите ка, как лучше сделать. Хотелось что-то типа:
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, то он полетит дальше
}

Спасибо за внимание и подсказки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.