Midas中的BUG, 无法捕捉SocketConnection连接失败的异常,造成程序死锁!快来帮帮我吧! (100分)

  • 主题发起人 LiChaoHui
  • 开始时间
L

LiChaoHui

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个Midas的程序, 采用SocketConnection连接,
需要在程序运行时捕捉连接失败的异常,但是不能够捕捉
焦急中。。。。。
发现进行调试跟踪时可以拦截到, 但正常运行时造成长时间等待,
无法捕捉连接失败的异常
 
我回去看看他的代码
 
procedure TFrm_main.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
var
str, strcaption: string;
begin
if Sender = dm.SocketConnection then
begin
application.MessageBox('数据连接被以外断开或数据操作失败。。。。。。。。。。。。。。
end
 
这么简单的代码,但是总是死掉, 应该是Delphi VCL内部的漏洞
try
SocketConnection1.Connected := True;
except
ShowMessage('连接应用服务器失败');
end;
 
连接时最好先用个socket测一下通不通
 
to hfghfghfg
我上面的代码也没有什么问题呀,为什么老是死掉呢,
难道不能这样捕捉异常吗?
 
测通不通
最好用TPowersock
 
我是说在MIDAS中出现的, 我故意让它连接失败,但是我捕捉不到失败的异常
 
如果TPowersock通
再用SocketConnection1连接
如死掉
则是你的应用服务器有问题
应用服务器用的是bde还是ado?
 
连接成功当然没有问题啦, 我说的是连接失败的情况啊
我要捕捉连接失败的异常, 测试通不过, 程序老是死了
 
故意让它连接失败
会等超时的 很久 但不会死
 
它会报'rpc服务不可用的'
 
不应该的呀,连接失败,应该马上能够捕捉到的呀, 否则跟死了似的, 用户能受的了吗?
我是受不了,程序在内存里很长时间不退出去
 
我做过一个项目就是用SocketConnection的
连接的做法:
用TPowersock测试 ip和端口
if 不通 then
begin
提示 ,退出
end
else
begin
SocketConnection 连接
end;

如果失败 就是 中间层写法的问题//需改中间层

 
幫你頂一下
 
还有 ScktSrvr 有bug
在用了超线程技术的计算机上会有问题//亲身经历
 
多谢楼上的兄弟,
再说明一下, 我是故意不开ScktSrvr.exe 然后去连接应用服务器,
用异常捕捉机制来捕获异常, 这个想法没错啊,
我的程序, 也没错啊,
所以, 应该是MIDAS组件本身的bug 或者错误所致,
 
呵呵, 说来说去都是Delphi自己的 Bug ,真是想说爱你不容易
 
你将SocketConnection.SupportCallback := False,那么那代码就可以截获异常了。
 
不會吧,我剛才試了一下
try
SocketConnection1.open;
except
on e:exceptiondo
begin
showMessage(e.Message);
end;
end;

一切正常,當連接失敗的時候很快就會彈出異常信息
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
967
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
回复
0
查看
1K
天地弦
顶部