Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.02;
Скачать: CL | DM;

Вниз

Обработка исключений   Найти похожие ветки 

 
Nameziz   (2008-09-22 13:28) [0]

Народ Подскажите новичку где в коде необходимо сделать обработку исключений + дайте советов по оптимизации.

function TDM.FindById(ItemId: Integer): Boolean;
begin
 Result := False;
 if database_Connected then
   with ModelsQuery do
   begin
     SQL.Text := Format(const_sql_FindById, [ItemId]);
     Open;
     Result := True;
     if Result then
     begin
       if Selection = s1 then
         ItemS1 := ItemS2;
     end
     else
       ItemS1 := ItemId;
     Selection := s1;
     SQL.Text := const_sql_AllModels;
end;


 
Sergey13 ©   (2008-09-22 13:34) [1]

> [0] Nameziz   (22.09.08 13:28)

А что тут оптимизировать? Это надо стереть и переписать заново.

например

> SQL.Text := Format(const_sql_FindById, [ItemId]);

надо заменить на параметрический запрос.

> Result := True;
>     if Result then

А какой Result еще может быть в этом месте?

> SQL.Text := Format(const_sql_FindById, [ItemId]);
> SQL.Text := const_sql_AllModels;

Это ты типа и смотреть и искать хочешь одним экземпляром компонента? Экономишь?


 
Ega23 ©   (2008-09-22 13:45) [2]

try
 Dataset.SQL.Text := ....;
 DataSet.parameters.....
 try
   Dataset.Open;
   Result := True;
 except on E : Exception do
   begin
     Result := False;
     LogError(E.message);
   end;
 end;
finally
 DataSet.Close; // Ну это если надо
end;


 
KSergey ©   (2008-09-22 13:48) [3]

> Nameziz   (22.09.08 13:28)  
> Народ Подскажите новичку где в коде необходимо сделать обработку  исключений

Можно не делать нигде в этом коде.
А что хотим этой обработкой добиться?


 
MsGuns ©   (2008-09-22 15:50) [4]

Защищенные блоки кода используются только в тех местах, которые "не зависят" от программиста, например при обращении к внешнему устройству, попытке доступа к скл-серверу, запросе ресурсов, обработке введенных пользователем как текст данных и т.д. Т.е. в ПОТЕНЦИАЛЬНО ОПАСНЫХ участках кода. В вашем коде таким участком является попытка открыть таблицу БД, вот и заключите его в try/except


 
Nameziz   (2008-09-22 15:59) [5]

спасибо. тогда еще вопрос относительно открытия и закрыитя dataset. нужно ли брать в try / finally


 
{RASkov} ©   (2008-09-22 16:03) [6]

> [5] Nameziz   (22.09.08 15:59)
> вопрос относительно открытия и закрыитя dataset. нужно ли
> брать в try / finally

:)

> В вашем коде таким участком является попытка открыть таблицу
> БД, вот и заключите его в try/except


 
clickmaker ©   (2008-09-22 16:03) [7]

> нужно ли брать в try / finally

да
вообще на открытие любого ресурса, если используешь его только в это блоке кода, нужно своё закрытие. По принципу "взял у системы - поюзал - отдал"


 
Поросенок Винни-Пух ©   (2008-09-22 17:16) [8]

SQL.Text := Format(const_sql_FindById, [ItemId]);
    Open;
    Result := not IsEmpty;
    if Result then



Страницы: 1 вся ветка

Текущий архив: 2008.11.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
2-1222251993
@!!ex
2008-09-24 14:26
2008.11.02
Как экспортировать функции, иодержащии @ в названии.


2-1222147865
vegarulez
2008-09-23 09:31
2008.11.02
Вопрос про хук.


3-1208751937
piople
2008-04-21 08:25
2008.11.02
SKIP записей при селективном запросе


2-1221762635
Muh
2008-09-18 22:30
2008.11.02
Подскажите, пожалуйста как программно в image1 загнать картинку с


2-1222246913
pathfinder
2008-09-24 13:01
2008.11.02
Массив объектов как параметр