Форум: "Начинающим";
Текущий архив: 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.014 c