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