procedure TForm1.FormCreate(Sender: TObject);
begin
clientsocket1.Host:='wanghui';
clientsocket1.Port:=222;
try
        clientsocket1.Open;
except
        on ESocketError do  MessageDlg('程序错误,可能由于服务端程序没有启动或者网络不通!',mtWarning , [mbok], 0);
end;
end;
运行这个程序时,如果服务器端程序没有启动,则报错class esocketerror with
message "Asynchronous socket error 10061"
但是我上面的程序明明对这个错误做了处理,为什么还抓不到呢?

解决方案 »

  1.   

    clientsocket1有onerror事件设置ErrorCode=0;
      

  2.   

    你在调试环境下运行的把????在ide之外运行就可以了!
      

  3.   

    如果调试环境下运行,便感觉如此.这不是问题.
    另外如果还不行,用:
      on exception do 
    进行捕获吧!
      

  4.   

    调试环境下由系统先报错,在到你的错误处理程序。直接运行exe就没有此问题。
      

  5.   

    你是在IDE环境下运行的吧,要么你编译后脱离IDE环境,要么将Debugger Options-Language Exception中的Stop on delphi exceptions叉掉。
    try
      clientsocket1.Open;
    except
      On ErrInfor:Exception do
        Application.MessageBox(ErrInfor.Message,'提示',mb_ok);
    end;
      

  6.   

    应该是在Debug的时候看到的;
    直接启动Exe就没了