Исключение необходимо перехватывать в секции Except-End. То, что находится в Finally-End выполняется вне зависимости от того, вызовет код после Try исключение или нет. Не проверял, но должно работать: Code: procedure TForm1.btn27Click(Sender: TObject); var HTTP: TIdHTTP; begin tmr3.Enabled:=True; HTTP := TIdHTTP.Create(nil); HTTP.HandleRedirects := False; try HTTP.GET('http://site.ru'); except if (Length(HTTP.Response.Location) > 0) and (HTTP.ResponseCode = 302) then ShowMessage('Redirect: ' + HTTP.Response.Location) else PlaySound('open.wav', 0, SND_ASYNC); tmr3.Enabled:=False; end; HTTP.Free; end;
Rastamanka вместо finally напиши except лол сомнительный совет - зачем отключать всё, так можно и необходимое для обработки исключение пропустить типа деления на нуль. лучше уж добавить это конкретное исключение в список игнорируемых в настройках отладчика. PS может мне кто объяснить чего вас всех так тянет в сеть даже без знания того что такое отладчик, исключения и т.п.
Ну вот ты и объясняй ему теперь, что такое отладчик и как добавить исключение в игнор (но перед этим не забудь объяснить что такое исключение и как оно может быть вызвано)
если последовать этому совету то все тоже будет не очень то гладко, по скольку HTTP.Free сработает только, если будет вызвано исключение потому я и вынес его за пределы Try-Except
Ну извините, нянькой не работаю. Если надо - нагуглит, или догадается потыкаться в меню А вот что теперь сообщения обо всех исключениях не будут выводится - это действительно поле усеянное граблями. есчесно в код даже толком не смотрел, и не видел что там идет создание/удаление, зато увидел что есть finally и нету except и написал Раз уж пошла такая пьянка то по-хорошему там должны быть оба этих блока
с исключениями и без механизма для автоматического вызова деструкторов при исключении тяжко наверно ?
мне уже нет, т.к. дельфи встречаю только тут ну а вообще да - чтобы и освободить ресурсы и обработать исключения типа такого надо каждый раз писать: try try // some code except // end; finally // end;
Попробовала изменить код на ваш. В итоге else не выполняется )) Программа просто подвисает на некоторое время и никакого эффекта. Думала из-за звука решила добавить ShowMessage туда и ничего не выводиться хотя на сайте редиректа нет на данный момент )
почитай о конструкциях try-except, try-finally. ссылку давал выше как было выше сказано правильно было бы использовать обе эти конструкции, перейдя по ссылке можно найти пример использования этих конструкций вместе, да и вроде тут кто-то показывал пример