Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1201414165
snake-as
2008-01-27 09:09
2008.11.02
Помогите разобраться с ADO


2-1221827378
Matveih1
2008-09-19 16:29
2008.11.02
Работа с DBGried.


15-1221108426
Cyrax
2008-09-11 08:47
2008.11.02
Терминатор 2 3D - Битва сквозь время: фрагмент с T1000000


3-1208684818
Pilum
2008-04-20 13:46
2008.11.02
Каковы сравнительные преимущества FB/IB и MySql в разработке MU?


2-1222019809
Сергей
2008-09-21 21:56
2008.11.02
Алгорит записей в БД накладных...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский