Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Вниз

with do, try, Execute...   Найти похожие ветки 

 
Новинький   (2006-07-02 10:10) [0]

Привет Мастерам, и всем всем!
Ребята подскажите начинающиму, какую роль играет обработка исключений? В каких местах программы их нужно вставлять? try, except,  finally?

К примеру такой код:

with Query1.Active do
try
 begin
  Close;
  Clear;
  SQL:="";
  Open
   if Execute then
   begin
          on EDatabaseError do
             First;
   end;
 end;
finally
 Free;
end;


 
Phoroon~ ©   (2006-07-02 10:59) [1]


> какую роль играет обработка исключений?

Просто позволяет тебе вместо ошибки сделать свои операции.
И уведомляет тебя, что произошла ошибка, но пользователь не видит ее (если ты сам не покажешь).


> В каких местах программы их нужно вставлять?

В тех местах, где по твоему мнению потенциально возможна ошибка ( пример: деление на ноль).


 
Новинький   (2006-07-02 11:35) [2]

Т.е. получается:

with Query1.Active do                   <Если запрос активен, тогда
try                                             <Начинаем проверку исключений
begin                                        
 Close;                                       <Закрываем запрос
 Clear;                                       <Очищаем запрос
 SQL:="";                                    <Создаём новый запрос
 Open                                        <Открываем запрос
  if Execute then                          < Если ???  то
  begin                                          
         on EDatabaseError do          <Открывается ошибка
            First;                             < ???
  end;                                        
end;                                          
finally                                          <В оконцовке
Free;                                           выгружаем ВСЕ,А сто именно?
end;

Я правильно понимаю или нет если нет то поправте, пожалуйсто!


 
Новинький   (2006-07-02 12:23) [3]

И еще ребята а каких ситуациях ставиться except, а вкаких finally?


 
PSPF2003 ©   (2006-07-02 12:30) [4]


> finally

При создании объекта. Если в процессе создания произойдет ошибка память будет освобождена
> except

Например считываем данные с Editа и переводим их в Integer. А умный юзер вместо нуля ставит о Можно ошибку обработать и сообщить ему об этом.

А вообше ответы на такие вопросы есть в ЛЮБОЙ книге


 
Новинький   (2006-07-02 12:35) [5]


> PSPF2003

Спасибо тебе! Я знаю что есть в каждой книге, просто там так изложено, что я вроде понимаю, а применить нормально не могу! Немог бы ты,
> Новинький   (02.07.06 11:35) [2]

этот пост, вчастности там где вопросы!!! За ранее спасибо ребята!!!


 
PSPF2003 ©   (2006-07-02 12:38) [6]


> Новинький


Извини не понял? Еще раз.


 
PSPF2003 ©   (2006-07-02 12:40) [7]

Если есть возможность поищи и скачай в сети книгу Фленова “Библия Delphi” .


 
Новинький   (2006-07-02 12:41) [8]


> Извини не понял? Еще раз.

Я имел ввиду, что еще мне не понятен смысл Execute, First.


 
Новинький   (2006-07-02 12:45) [9]

Сейчас попробую поискать, h--p://newshot.ru, класный сайтик по некоторым вещам если интерестно! Непримите за рекламу!


 
PSPF2003 ©   (2006-07-02 12:46) [10]

Execute. Можно записать так if Execute = true, а можно просто if Execute. А вот со следующим не помогу, я с базами неработал.


 
PSPF2003 ©   (2006-07-02 12:49) [11]

Сразу предупреждая полная книга в пдф весит 100 метров


 
Новинький   (2006-07-02 12:55) [12]


> PSPF2003

Хочешь тебе на мыло скину сайтиков с которых книги, шаблоны, проги, и т.д., можно без платно! ?


 
PSPF2003 ©   (2006-07-02 13:05) [13]

Не пасибо у меня этого добра навлом.


 
Пусик ©   (2006-07-02 13:30) [14]

1. Конструкция try..finally..end

В блоке finally..end должны быть операторы, которые должны выполниться БЕЗУСЛОВНО.
Т.е., если в блоке try..finally возникает исключение(Exception), выполнение программы не прервется немедленно, сначала будут выполнены операторы в finally..end.

2. Конструкция try..except..end

Предназначены только для обработки исключения, возникающего в try..except. При возникновении исключения управление немедленно передается в блок except..and.
При нормальном выполнении программы операторы в except..end не выполняются.

Пример:

var
 F: TFileStream;
 Buf: String;
begin


 try
1    F := TFileStream.Create("c:\file.txt",fmOpenRead);
 except
2    ShowMessage("Ошибка при открытии файла");
3    Exit;
 end;
 try
4    SetLength(s,10);
5    F.Read(s[1],10);
 finally
6    F.Free;
 end;
7  ShowMessage(s);


При возникновении исключения в строке (1) произойдет выполнение кода из блока обработки исключения except..end (2,3).
После того, как файл открыт, далее будут выполняться операторы 4,5,6
Если при чтении файла(5), либо  выполнении (4) произойдет оошибка, управление будет передано сразу на строку (6), будут освобождены ресурсы, выделенные в (1), и утечки памяти не будет. Но при этом, если возникла ошибка, будет поднято исключение в программе, и строка (7) не будет выполнена.


 
Новинький   (2006-07-02 20:28) [15]

Спасибо ребята понял! В частности благодарю
> Пусик

ОЧЕНЬ ПОДРОБНО, КОРОТКО И ПОДРОБНО, СПАСИБО!!!!


 
Новинький   (2006-07-02 20:35) [16]

Побоюсь спросить! А что делает конструкция with Query1.Active do в посте
> Новинький   (02.07.06 11:35) [2]

, и First?


 
Новинький   (2006-07-02 21:19) [17]

?


 
Новинький   (2006-07-02 21:32) [18]

В чем ошибка?
ADOQuery1.SQL:="select * from phone where fam = "+QuotedStr("Сидоров");
Пишет: Несовместимость типов TString and String


 
Leonid Troyanovsky ©   (2006-07-02 21:36) [19]


> Новинький   (02.07.06 21:32) [18]
> В чем ошибка?

> Пишет: Несовместимость типов TString and String


Слева TStrings, справа String.
В этом и ошибка.

--
Regards, LVT.



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

Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.015 c
2-1152091212
Новинький
2006-07-05 13:20
2006.07.23
TADOStoredProc


5-1135599419
Неуловимый Джо
2005-12-26 15:16
2006.07.23
Компонент для работы с образами CD дисков (ISO)


15-1150823390
Alx2
2006-06-20 21:09
2006.07.23
Ителлектуальная собственность


9-1132266433
Кефир87
2005-11-18 01:27
2006.07.23
Рендер в текстуру получается кривой!


5-1135944628
olegz77
2005-12-30 15:10
2006.07.23
Работа с формой из компонента





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский