现有一函数代码
Function  Get_For_Host_ByIdHttp(aHost , aUrl: string) : Boolean ;
var
  IdHTTP1: TIdHTTP;
begin
 try
  Result := True;
  IdHTTP1 := TIdHTTP.Create(nil);  with IdHTTP1 do
  begin
     try
        ReadTimeout := 15000;
        Port := 80 ;
        Host := aHost;
        Connected ;         DataString :=  Get(aUrl) ;
     except
       on E: Exception do
       begin
          Result := False;
       end;
     end;
  end;
  finally
    IdHTTP1.DisconnectSocket ;
    IdHTTP1.Free;
  end;
end
有一线程不停调用该函数,时间长后会出现#10053错误。并且该函数无法继续执行,导致线程中断。但重新启动一下线程又恢复正常。请问各位高手有什么办法能够屏蔽该错误,能让该函数能够稳定的执行。即使出错也能够跳出去。   不胜感谢

解决方案 »

  1.   

    既然出错也能够稳定执行,那把出错处理的语句给去掉.
    except
           on E: Exception do
           begin
              Result := False;
           end;
         end;
      

  2.   

    TO  darkie28(小二黑) 
    这种方法也不能屏蔽该错误。
      

  3.   

    具体错误如下Socket Error # 10053
    Software caused connection abort.
      

  4.   

    IdHTTP1你是动态建立的,然后finally把他free掉了,可是用线程,经常会重复掉用你动态建立的东西,你把他free掉,会不会出问题?建议你还是从控件中拉一个idhttp吧.
      

  5.   

    // 差不多就是这样,如果有点小错误,自己改下
    tryexcept
      on e;Exception do
      begin
        if e.Message='Socket Error # 10053'++#13+#10+Software caused connection abort.'
        begin
          eixt;
        end;
      end;
    end;    //用户名称不对,为空的情况。
        if st='''USER '': Invalid number of parameters'+#13+#10 then
        begin
          ETips:='登录文件服务器的用户名称不对,请认真输入';
        end;
      

  6.   

    try except 不可以屏蔽异常吗