我创建了一个程序,可以自动连接到我们的本地服务器并下载更新,代码如下:
// Connect to web server and download ToBeInstalled.ini
Url := 'http://'+IPAdd+'/ToBeInstalled.ini';
MS := TMemoryStream.Create
try
try
http.Get(url, MS);
code := http.ResponseText;
except
on E: EIdHTTPProtocolException do
code := http.ResponseCode;
end;
MS.SaveToFile(UserPath + 'ToBeInstalled.ini');
finally
http.Free();
end;
该程序在办公室时运行良好,但当用户在家且无法访问服务器或服务器不可用时,会出现“套接字错误#10061”
我不知道如何捕获该错误,更糟糕的是,在显示该错误消息后,程序完全停止执行。你知道如何解决这个问题吗?太感谢了。
你的异常处理程序只是捕获EIdHTTPProtocolException
特别是异常,但也可以引发其他几种类型的异常,包括EIdSocketError
。您需要相应地更新您的处理程序,或者只是让它捕获所有可能的异常,而不是查找特定类型。既然你说未捕获的异常导致你的整个应用程序失败(这意味着你有更大的问题需要处理,而不仅仅是TIdHTTP
),您还应该更新代码来处理由TMemoryStream
以及。
尝试这个:
// Connect to web server and download ToBeInstalled.ini
Url := 'http://'+IPAdd+'/ToBeInstalled.ini';
try
MS := TMemoryStream.Create
try
http.Get(url, MS);
code := http.ResponseText;
MS.SaveToFile(UserPath + 'ToBeInstalled.ini');
finally
MS.Free;
end;
except
on E: EIdHTTPProtocolException do begin
code := http.ResponseCode;
end;
on E: Exception begin
// do something else
end;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)