我创建了一个自动连接到本地服务器并下载更新的程序,代码如下:
// 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;
该程序在办公室运行得很好,但当用户在家无法访问服务器或服务器不可用时,GET“Socket Error#10061”
我不知道如何捕捉那个错误,更糟糕的是,在显示该错误消息后,程序一起停止执行。你知道怎么解决这个问题吗。非常感谢。
2条答案
按热度按时间bmp9r5qi1#
您的异常处理程序只专门捕获
EIdHTTPProtocolException
异常,但也可以引发其他几种类型的异常,包括EIdSocketError
。您需要相应地更新您的处理程序,或者只让它捕获所有可能的异常,而不是查找特定类型。既然您说未捕获的异常导致整个应用程序失败(这意味着您有更大的问题要处理,而不仅仅是TIdHTTP
),您还应该更新代码以处理由TMemoryStream
引发的异常。试试这个:
kmynzznz2#
我是这样用的: