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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
6-75285
Irr
2003-09-23 19:54
2003.12.23
Что за глюк в локалке с Novell?


14-75321
Viktor
2003-12-01 14:42
2003.12.23
Кодировка MAC, KOI


14-75359
Gorlum
2003-11-29 13:38
2003.12.23
Тормозят фильмы


1-75240
The ZEuS
2003-12-10 17:24
2003.12.23
проблемы с показом модальной формы из DLL


1-75195
Жук
2003-12-11 14:26
2003.12.23
Имена файлов в OpenDialоg





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