Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Транзакции


Dmitry.0xDEADFA11 ©   (2013-11-05 16:08:00) 

Многопоточное приложение, нужно ли ADOConnection1.RollbackTrans;брать в try..except.

 
try
   // ...
 except
   if ADOConnection1.InTransaction then
     ADOConnection1.RollbackTrans;
   // FreAndNil(...)
   // ...
 end;


Ega23   (2013-11-05 22:02:00) [1]


>  освободить айтемсы и линксы, чтобы не было утечек.


obj := TMyObject.Create;
try
 try
   DoSomething;
 except
   DoOnException;
   raise; // if need
 end;
finally
 obj.Free;
end;


DVM   (2013-11-05 19:05:00) [2]

Есть же finally


Dmitry.0xDEADFA11   (2013-11-05 18:23:00) [3]

А что ты собираешься сделать в except ...end

- будет пустым. Вообще это нужно, чтобы на случай ошибки при отмене транзакции освободить айтемсы и линксы, чтобы не было утечек.

try
  // ...
except
  if ADOConnection1.InTransaction then
    try
      ADOConnection1.RollbackTrans;
    except
    end;
  FreAndNil(Items);
  FreAndNil(Links);
end;


DVM   (2013-11-05 18:09:00) [4]

Еще в один try..except.???

А что ты собираешься сделать в except ...end, если при роллбэке будет исключение?


Наверх

Титульная страница Поиск, карта сайта Написать письмо