如何攔截TClientSocket.Open()的ErrorEvent(or exception)? |
尚未結案
|
Butch
一般會員 發表:4 回覆:3 積分:1 註冊:2004-10-21 發送簡訊給我 |
各位前輩:
小弟想要攔截TClientSocket.Open()的ErrorEvent(or exception)
以下是我的部分Code(簡單的測試): class TForm1 : public TForm
{
__published:
TClientSocket *ClientSocket1;
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
void __fastcall ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent,int &ErrorCode);
private:
public:
__fastcall TForm1(TComponent* Owner);
};
------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try{
ClientSocket1->Open();
}
catch(const ESocketError &e){
ShowMessage("Error 1");
}
catch(const TSocketErrorEvent &e){
ShowMessage("Error 2");
}
catch(const Exception &e){
ShowMessage("Error 3");
}
catch(...){
ShowMessage("Error 0");
}
return;
}
---------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
switch(ErrorEvent){
case eeSend:
ShowMessage("Send Error");
break;
case eeReceive:
ShowMessage("Recv Error");
break;
case eeConnect:
ShowMessage("Connect Error");
break;
case eeDisconnect:
ShowMessage("DisConnect Error");
break;
case eeGeneral:
ShowMessage("Unknow Error");
break;
}
ErrorCode = 0;
} 不管我用...OnError Event or exception去攔截錯誤,我都攔不到,請問有什麼方法可以攔截到TClientSocket.Open()的失敗訊息呢....
|
allenchan
資深會員 發表:10 回覆:306 積分:283 註冊:2004-01-06 發送簡訊給我 |
|
Butch
一般會員 發表:4 回覆:3 積分:1 註冊:2004-10-21 發送簡訊給我 |
|
allenchan
資深會員 發表:10 回覆:306 積分:283 註冊:2004-01-06 發送簡訊給我 |
我想可能是你 ClientSocket 是 NonBlocking Mode,這是 async 的做法,所以你 ClientSocket1.Open 之後程式馬上就過去了,此時並不知道成功還失敗,須等到 callback event 回來才知道成功失敗,這時候程式早就離開你的 try ... catch 可控制範圍了,等到 callback event 回來,這時候只有整個程式最外圈的 try ... catch 才攔得到,但是我試過,不管 Blocking or NonBlocking 在 ClientSocket1Error 裡面都可以攔到,若你將 ErrorCode = 0 之後,就不會繼續 throw exception 給上一層。
|
pony0952
一般會員 發表:3 回覆:7 積分:2 註冊:2003-10-06 發送簡訊給我 |
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |