Форум: "Начинающим";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];
ВнизОбработка исключений Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c