Как проверить, возникает ли исключение TIdHTTP
Я не уверен, что это лучший способ проверить, возникает ли исключение TIdHTTP, вот что я сделал:
HTTP := TIDHttp.Create(nil);
try
try
HTTP.Head(URL);
SizeF := HTTP.Response.ContentLength;
code := HTTP.ResponseCode;
except
on E: Exception do
begin
code := HTTP.ResponseCode;
ShowMessage(IntToStr(code));
end;
end;
finally
HTTP.Free;
end;
if code = 200 then
// go download the file using multiple threads.
То, чего я хочу достичь, - это поднять точку зрения, если она есть (я думаю, я уже сделал), иначе программа продолжит работу и загрузит файл. Так это правильный способ сделать это? Спасибо за ваши ответы.
1 ответ
Как правило: обрабатывать исключения можно только тогда, когда вы можете и хотите их обрабатывать.
В противном случае пусть они просто текут, чтобы остановить текущее выполнение вашего кода. Без какого-либо перехвата вы просто получите диалог с сообщением об исключении (это обрабатывается TApplication
).
В этом случае вы можете изменить свой код на
HTTP := TIDHttp.Create(nil);
try
HTTP.Head(URL);
// if an exception is raised then the rest of the code will not be executed
// yes, the code in finally part will execute
SizeF := HTTP.Response.ContentLength;
code := HTTP.ResponseCode;
finally
HTTP.Free;
end;
// check if all conditions are met
if code <> 200 then
// if not, raise a custom exception as you like
raise Exception.Create( 'Not what I expected here' );
// go download the file using multiple threads.