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

Вниз

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

 
TUser ©   (2003-12-10 19:01) [0]

Есть участок кода, котрый может вызывать эксепшен. Я его защищаю через try...exept/finally, но эксепшен все равно возникает. Открыл демо-проект, который у меня буквально неделю назад работал правильно, но там та же фигня. Код у демки такой
procedure THttpToMemoForm.GoButtonClick(Sender: TObject);
var
Data : TMemoryStream;
begin
DisplayMemo.Clear;

GoButton.Enabled := FALSE;
Data := TMemoryStream.Create;
try
httpcli1.URL := URLEdit.Text;
httpcli1.Proxy := ProxyEdit.Text;
httpcli1.ProxyPort := "80";
httpcli1.RcvdStream := Data;
httpcli1.Get;
LoadMemoFromMemoryStream(DisplayMemo, Data);
finally
Data.Free;
GoButton.Enabled := TRUE;
end;
end;


В своем проекте пишу нечто похожее
try
httpcli1.Get; (*
finally
if ms.Size=0 then memo5.Lines.Delete(memo5.Lines.Count-1)
else memo5.Lines.Strings[memo5.Lines.Count-1]:="Found "+url;
end;*)
except
else if ms.Size=0 then memo5.Lines.Delete(memo5.Lines.Count-1)
else memo5.Lines.Strings[memo5.Lines.Count-1]:="Found "+url;
end;

Я пробовал по-разному, on писал и пр., но каждый раз выскакивает ошибка, которая назначается через raise в методе httpCli1.Get

Что такое случилось и как лечить?


 
Иван Шихалев ©   (2003-12-10 19:06) [1]

finally Exception не глушит. а конструкция

except
else

вообще не должна компилироваться, ИМХО.


 
Тимохов   (2003-12-10 19:07) [2]

Что значит "выскакивает"?


 
Sergey_Masloff   (2003-12-10 19:12) [3]

except гасит исключение
finally не гася исключение позволяет гарантированно выполнить участок кода.
можешь сделать так:

try
{выделяешь ресурсы}
try
{работаешь}
finally
{высвобождаешь ресурсы}
end;
except
on E:Exception do
Raise;
end;


 
TUser ©   (2003-12-10 19:12) [4]

Компилироваться-то она компилируется. Но ни эта конструкция, ни
except
on EHTMLException do something
не работеат. Эксепшен выскакивает в любом случае, т.е. появляется окошко с сообщением об ошибке и выполнение проги завершается.
Ошибка, скорее всего не в коде, а в каких-то мне не понятных настройках Делфы. Повторяю - неделю назад или 2 демо-проект, прилагаемый к компоненту THTMLCli работал, а теперь - нет.


 
Arm79 ©   (2003-12-10 19:14) [5]

А если запустить в проводнике? Выдается ошибка?


 
Тимохов   (2003-12-10 19:19) [6]

может у тебя эесептион имеет класс отличный от EHTMLException?


 
TUser ©   (2003-12-10 19:29) [7]

2 Тимохов
Нет, выскакивает именно то, что я написал.

Я сейчас вылечился так. В исходниках компонента убрал raise, т.е. написал
if FStatusCode >= 400 then
begin end;// raise EHttpException.Create(FReasonPhrase, FStatusCode);

Не уверен, что это очень хорошо, но работает.



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

Текущий архив: 2003.12.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
6-75301
XeON
2003-10-25 18:42
2003.12.23
Приём файлов через Socket


14-75318
Ske4er
2003-12-02 09:11
2003.12.23
Как долго можно не выключать компьютер?


1-75155
с13
2003-12-07 09:08
2003.12.23
Scroll Bar


1-75170
Дельфи
2003-12-09 16:07
2003.12.23
Как прокрутить TRichEdit вниз?


1-75267
Yu
2003-12-10 10:35
2003.12.23
Переполнение буфера?