即使我使用 try..except 也会出现异步套接字错误 10049

Oma*_*bal 4 sockets delphi exception try-finally tclientsock

当我运行我的程序(在调试器/IDE之外)时,我收到错误异步套接字错误10049,我不应该收到消息对话框:“错误”吗?请参阅下面的我的代码

begin
    try
       ClientSocket1.open;
    except
       showmessage('error');
    end;
end;
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

G-M*_*Man 5

您应该做的是处理 TClientSocket 的 Error 事件,因为这是您能够捕获套接字错误的地方。

ErrorCode参数是WinSock错误代码的参数,如果您想消除错误,可以将ErrorCode设置为0,这将防止抛出异常,然后您可以识别错误是什么并处理它你想要的方式

procedure TForm1.ClientSocket1Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
var error : Integer; 
begin

   error := ErrorCode; {prevent exception from being thrown}

   ErrorCode := 0;

   if error = 10049 then
     showmessage('asynchronous socket error');
.
.
.


end;
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助

盖坦·西里