【发布时间】:2013-10-08 20:14:35
【问题描述】:
您好,我是使用 Delphi 的新手,我正在尝试编写一个应用程序来检查网站是否已启动或是否有任何问题。我正在使用 Indy 的 IdHTT。问题是它会捕获任何协议错误,但不会捕获套接字错误之类的东西。
procedure TWebSiteStatus.Button1Click(Sender: TObject);
var
http : TIdHTTP;
url : string;
code : integer;
begin
url := 'http://www.'+Edit1.Text;
http := TIdHTTP.Create(nil);
try
try
http.Head(url);
code := http.ResponseCode;
except
on E: EIdHTTPProtocolException do
code := http.ResponseCode;
end;
ShowMessage(IntToStr(code));
if code <> 200 then
begin
Edit2.Text:='Something is wrong with the website';
down;
end;
finally
http.Free();
end;
end;
我基本上是在尝试捕捉任何不是网站正常的事情,因此我可以调用另一个表单,该表单将设置一封电子邮件告诉我该网站已关闭。
更新:首先你是对的,我确实错过了'然后'抱歉删除其他代码并且它被错误地删除了。在处理异常时我不知道具体到一般情况谢谢。最后我确实找到了我想要的就是这里的代码
on E: EIdSocketError do
使用使用 IdStack
【问题讨论】:
-
请注意,您有一个语法错误:
if code <> 200 begin应该是if ... then begin -
评论你的真实代码更容易。请不要发布假代码。
-
请复制粘贴真实代码。还请注意缩进:只有前三行代码才是
except块的一部分。其余的确实在 try-finally 块中,尽管缩进表明不是这样。