我有这段代码来检查与我的服务器的连接 所以代码是这样的:
function CheckInternet(ssip:string): boolean;
begin
result:=false;
with form1.IdTCPClient1 do
try
ReadTimeout:=2000;
ConnectTimeout:=1000;
Port:=80;
Host:=ssip;
Connect;
Disconnect;
result:=true;
except
on E:EIdSocketError do
result:=false;
end;
end;
运行后: 如果服务器在线,每件事都可以 但如果服务器在线,我会遇到很多错误:
debug
或release
模式没有区别!两者都有错误
也在android这导致两个应用程序崩溃,并没有处理仍然代码!! ..
我该如何避免这个错误?
答案 0 :(得分:0)
只有在主UI线程的循环中调用CheckInternet()
并且不捕获引发的异常时,才会发生这种情况。当捕获未捕获的异常时,弹出消息由FMX中的默认异常处理程序显示。
EIdSocketError
不是Connect()
可以提出的唯一例外类型。还有其他几种可能的类型,你没有抓住它们。您应该从except
块中删除过滤器:
function CheckInternet(ssip:string): boolean;
begin
result:=false;
with form1.IdTCPClient1 do
try
ConnectTimeout:=1000;
Port:=80;
Host:=ssip;
Connect;
Disconnect;
result:=true;
except
result:=false;
end;
end;