我用TSockClient里面有个OnError的事件,这样当发生网络错误时(例如10054,10061等),直接在这个事件里面进行处理就行了,但是TIdTcpClient没有类似的事件,出错时他会抛出一个异常,但是如果让我在所以访问它的地方都做异常处理又太麻烦了,请问有没有什么好的解决方案?

解决方案 »

  1.   

    你放了 indy misc 里的 IdAntiFreeze 控件了吗
      

  2.   

    uses IdStacktry
     idHTTP.get(URL);
     except on E: Exception do begin
            if E is EIdSocketError then
            case EIdSocketError(E).LastError of
              HOST_NOT_FOUND, WSANO_DATA: begin
              self.Terminate;
              DoError(Format('%d, ThID: %d,找不到网络,请检查网络连接. Except: %s', [EIdSocketError(E).LastError, ThreadIndex, S_Intervenor[FIntervenor], E.Message]));
              Exit; end;
            end;