Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.28;
Скачать: CL | DM;

Вниз

Странность в работе 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
2-1264136473
Дмитрий С
2010-01-22 08:01
2010.03.28
Регистр букв в AutoComplete в TComboBox


2-1264583093
ИгорУЛЬКА
2010-01-27 12:04
2010.03.28
Получить отдельные значения строки


2-1264427732
webpauk
2010-01-25 16:55
2010.03.28
Отображение элементов


2-1264422307
Anonim
2010-01-25 15:25
2010.03.28
доступ к списку Tlist


15-1262890350
AlexDan
2010-01-07 21:52
2010.03.28
подключение через проксисервер..