Главная страница
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.017 c
4-1199201118
MFN+
2008-01-01 18:25
2008.11.02
Как получить имя Mapped файла по его Handle


10-1150277849
oto
2006-06-14 13:37
2008.11.02
архивизация файлов


15-1221024724
Vlad Oshin
2008-09-10 09:32
2008.11.02
BDS2006, палитра компонент, как упорядочить внутри вкладки по афл


15-1220944041
alex_3
2008-09-09 11:07
2008.11.02
ошибка и try...


3-1208544699
Alexey
2008-04-18 22:51
2008.11.02
Таблицы в InterBase