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

Вниз

Странность в работе try..except   Найти похожие ветки 

 
Oleg196lora   (2010-01-26 12:06) [0]

Здравствуйте уважаемые Мастера!
Имеется процедура:

procedure TForm1.Button1Click(Sender: TObject);
begin
   try
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add("CREATE TABLE D1 ([Дата] char(10), [Время] char(5), [Параметр] char(4))");
      ADOQuery1.ExecSQL;
   except
       ShowMessage("База уже создана!");
       D1.Active:=True;
       ShowMessage("База активна");
       D1.Active:=False;
       ShowMessage("База закрыта");
   end;
end;

Когда файла на диске нет, создание проходит нормально, при повторном запуске процедура должна "уйти" на except, но вместо этого вываливает
raised EOLEException.
При запуске ехе-шника вне среды Дельфи все работает как надо.
В чем здесь засада? (Говорят такое бывало не только у меня)


 
Игорь Шевченко ©   (2010-01-26 12:08) [1]


> В чем здесь засада?


в том, что среда перехватывает исключения. нажми на continue в появляющемся диалоге


 
Сергей М. ©   (2010-01-26 12:08) [2]

Сними крыжик в опциях дебагера "Stop on Delphi exceptions"


 
Ega23 ©   (2010-01-26 12:10) [3]

Tools -> Debugger Options -> Language Exceptions -> Снять галку Stop On Delphi Exceptions

Но я крайне не рекомендую её выключать.


 
oleg1963lora   (2010-01-26 12:47) [4]


> Сергей М. ©   (26.01.10 12:08) [2]
> Сними крыжик в опциях дебагера "Stop on Delphi exceptions"

Спасибо за информацию. Однако крыжик снимать действительно страшновато, а то проглядишь что-нить такое - ящик водки не поможет :).

Однако, нельзя ли избежать выскакивания этого черта из табакерки путем добавления каких-либо строк. Ведь он выскакивает Не просто ТАК! Что-то ему не нравится.


 
12 ©   (2010-01-26 12:55) [5]

EOLEException ему не нравится

>> путем добавления каких-либо строк
"//" перед этим поможет, 101%!


 
Сергей М. ©   (2010-01-26 12:55) [6]


> крыжик снимать действительно страшновато


Страшно, но не смертельно)
Если мешает - снимай и не бойся)


 
Юрий Зотов ©   (2010-01-26 13:05) [7]


> oleg1963lora   (26.01.10 12:47) [4]


Крыжик снимать не надо. И избегать ничего не надо. Это совершенно нормальное поведение отладчика, все так и должно быть.

Нажать на кнопку, наверное, не очень трудно?


 
turbouser ©   (2010-01-26 13:16) [8]


>
> Oleg196lora   (26.01.10 12:06)  

А зачем 3 сообщения? Подряд? Чтобы юзер не расслаблялся?


 
oleg1963lora   (2010-01-26 13:22) [9]


> Юрий Зотов ©   (26.01.10 13:05) [7]

Спасибо за совет :))).Успокоили. Я тут встретил упоминание компонента ApplicationEvents1Exception. Нельзя ли его применить? Насколько я понимаю обработчики исключений можно на него повесить.
Я попробовал написать в
procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
 ShowMessage("Error!");
end;
. Результат нулевой.


 
oleg1963lora   (2010-01-26 13:24) [10]


> turbouser ©   (26.01.10 13:16)

С базами давно не работал (с 1998 года:)) Это я для себя любимого.


 
Сергей М. ©   (2010-01-26 13:26) [11]


> Результат нулевой


Что значит "нулевой" ?
И какой результат ты желал при этом иметь ?


 
oleg1963lora   (2010-01-26 13:45) [12]

Результат нулевой в том  смысле, что данный компонент при исключении не вызывается. Я с ним ни разу не сталкивался, поэтому не знаю, что это и как его можно применить (если это вообще имеет смысл в данном случае)


 
12 ©   (2010-01-26 13:55) [13]

смотря как вызывать ошибку.
Возможно, компилятор ее просто оптимизировал и тупо не вызывает
как например, код I:=0; R:=1/I; не будет вызывать ошибки.

но код
var
 AC:TADOConnection;

 ac:= TADOConnection.Create(self);
 ac.ConnectionString:="Скайнет";
 ac.Open;

вполне вызовет


 
Сергей М. ©   (2010-01-26 14:19) [14]


> компонент при исключении не вызывается


Он и не должен "вызываться", если исключение перехвачено и "погашено" (обаботано) except-блоком.

Кр.того,  этот компонент не отвечает за перехват необработанных исключений, возникающих в доаолнительных потоках.


 
oleg1963lora   (2010-01-26 14:32) [15]

Вот теперь понятно. Думаю в моей задаче я смогу обойтись и без него. Кстати, насчет "крыжика" Сергей М. ©  [2] .
При возникновении сообщения о исключении внизу стоит чекбокс "игнорировать", я его взвел и черт перестал выскакивать :)
Все нормально.
Спасибо всем за помощь!



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

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

Наверх





Память: 0.48 MB
Время: 0.005 c
3-1237429884
DelphiN!
2009-03-19 05:31
2010.03.28
Создание "скрытого" поля в FireBird


15-1262714844
Зима
2010-01-05 21:07
2010.03.28
Откуда пошло и для чего указывать авторство?


1-1244994785
RWolf
2009-06-14 19:53
2010.03.28
D5: "step into" в код DLL


1-1245677150
Дмитрий Белькевич
2009-06-22 17:25
2010.03.28
Возможно ли поменять resourcestring в рантайме?


15-1262805333
Fenik
2010-01-06 22:15
2010.03.28
Нелегко быть президентом Украины





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