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

Вниз

try except   Найти похожие ветки 

 
Алексей Петухов   (2003-08-12 13:46) [0]

Уважаемые матсера.
не поможете с такой ситуацией:

есть процедура Sort, которая вызывается из другой процедуры:
....
Sort;
line1;
line2;
...

В процедуре Sort используется try..except:
procedure Sort
begin
...
try
Query.Open;
except
Query.SQL:=sql;
Query.Open;
end;
...
end;

По идее, после неудачной попытке открытия набора данных, текст запроса должен быть восстановлен, и набор должен быть открыт.
Но после возникновения исключительной ситуации управление не нередается на строку Query.SQL:=sql;, и не остается в процедуре Sort, а сразу валетает из процдуры и выполняется строка line1;.

Чё за ерунда?

Помогите пожалуйста.


 
Palladin   (2003-08-12 13:50) [1]

а сразу нельзя восстановить и потом открыть?

Query.SQL:=sql;
Query.Open;


 
Алексей Петухов   (2003-08-12 13:51) [2]

Нет конечно.


 
Verg   (2003-08-12 13:56) [3]


> Но после возникновения исключительной ситуации управление
> не нередается на строку Query.SQL:=sql;, и не остается в
> процедуре Sort, а сразу валетает из процдуры и выполняется
> строка line1;.


Откуда ж тогда ты знаешь, что произошла эта исключительной ситуация?

Поставь точку останова на Query.SQL:=sql;
и сделай погон - если не "брякнется", значит и не было никакого исключения. Копай в другом месте, например, откуда берется содержимое переменной SQL?
Однажды видел такое
procedure SetQSql(cosnt Sql : string);
begin
...
with Query1 do begin
...
Query1.Sql:=Sql; // Что будет записано в Query1.Sql?
...


 
Юрий Федоров   (2003-08-12 13:58) [4]

Возможно метод Query.Open асинхронный, то есть ошибка возникает в другом потоке. Тогда нужно поискать событие типа Query.OnError


 
Алексей Петухов   (2003-08-12 14:10) [5]

To Verg
>Откуда ж тогда ты знаешь, что произошла эта исключительной >ситуация?
Я поставил точку останова на Query.Open;, а потом нажимал "F8", так и узнал.


 
Palladin   (2003-08-12 14:12) [6]


> Нет конечно.

это почему это нет конечно?


 
Verg   (2003-08-12 14:17) [7]


> Я поставил точку останова на Query.Open;


F8 - (по крайней мере на D4) при выполнении процедуры вызвашей исключения НЕ ПОПАДАЕТ на первую строку за except - и это понятно - выполнение "шага без захода" сводится к замене байта непосредственно ЗА инструкцией call на код инструкции прерывания отладчика . В силу возникновения исключения программа не попадет на эту инструкцию-прерывание и выполнение продолжится так, будьто ты нажал F9.


 
Алексей Петухов   (2003-08-12 14:24) [8]

To Verg
Я кое-что поправил в коде и теперь при нажатии "F8" отладчик попадает на первую строку Except, но правда от этого нет толку почемуто.


 
Verg   (2003-08-12 14:27) [9]


> Но после возникновения исключительной ситуации управление
> не нередается на строку Query.SQL:=sql;


???
Че-то ты путаешь: то попадает, то не попадает....
Извини, я не телепат, чтобы осмысливать код не видя его перед глазами.


 
Юрий Федоров   (2003-08-12 14:28) [10]

>>Алексей Петухов (12.08.03 14:24) [8]
Отладчик в этом случае иногда склонен привирать, чтобы убедиться точно насчет последовательности выполнения операторов, поставь beep или ShowMessage


 
Алексей Петухов   (2003-08-12 14:45) [11]

Ладно, хорошо. Вроде разобрался с Божьей и вашей помощью.
Во внешних процедурах были другие try..except, видимо в них была проблема. Да еще кое-что. Вообщем заработало!
А на счет
>Отладчик в этом случае иногда склонен привирать,
Было у меня такое смутное подоздение. Мечется он че-то где не попадя, но в итоге вроде все правильно исполняется.
Спасибо.


 
Verg   (2003-08-12 14:47) [12]

Главное - в чудеса не верить :)



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

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

Наверх




Память: 0.47 MB
Время: 0.009 c
7-81988
_Raven
2003-06-08 18:38
2003.08.25
Модем


1-81761
Pindos
2003-08-02 08:27
2003.08.25
Нет Юнита D s g n I n t f


9-81525
Movelock
2003-02-22 11:18
2003.08.25
КАК ПОКАЗАТЬ НА ФОРМЕ МОДЕЛЬ из 3dmax


14-81949
VEG
2003-08-05 19:05
2003.08.25
Нужен ли человечеству ИИ???


14-81893
3APA3A
2003-08-08 01:03
2003.08.25
Касательно статьи...





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