再再To:淡淡的笑 (莫名异常的发生.......) (30分)

  • 主题发起人 sundayyoung
  • 开始时间
S

sundayyoung

Unregistered / Unconfirmed
GUEST, unregistred user!
我写的一个远程截图程序,使用的是NMUdp控件,当在我向客户端发送截屏信息前如客户端
程序被关闭,那么就会触发一个异常,设断点后发现发出截图信息后,虽然客户程序已被关
闭,但请求方的DataReceived事件仍被触发。照理来讲客户端程序已被关闭,那么请求端发
出的信息客户端接收不到,数据包就丢掉了,不可能有数据再返回请求方了。
迷惑,不解,望指点!
另外,我如何来屏蔽这个异常?
谢谢!
 
用else 响应一切异常无效??
 
else,怎么用啊,else前写什么啊?
 
try

except
on. ...do ....
on. ...do ....
on. ...do ....

else

end;
 
如 rustle 所述. else部分会捕捉所有异常.要小心 :) 捕捉处理后,最好重新触发一下,
因为这里的else 连内存,运行异常都会捕捉..
 
try
SUDP2.ReadStream(TmpStream);
except
Application.MessageBox('截屏未成功!','提示',mb_ok);
end;
代码:
但是不能屏蔽系统的异常报告:
Project Ser.exe raised exception class EWriteError with message'stream
write error'
 
try
SUDP2.ReadStream(TmpStream);
except
//这边空一行,不管
else
Application.MessageBox('截屏未成功!','提示',mb_ok);
raise; //重新触发异常 这句也可以不要,可以看你的需要.
end;
 
不行啊,运行到
SUDP2.ReadStream(TmpStream); 一句就出异常信息了!!
 
这样不知道行不行 .. 你这个错误好象不是因为 不能截获异常引起的.
 
你是是否没有在DataReceived事件判断?
 
本来照理论是不应该受到这条数据的(我也不知它是什么数据),但它硬是要创进来触发
UDP的DataReceived事件。我原来是用这个事件来读取远程传过来的图象的。
 
没有判断啊,应该如何判断呢?请指教,谢谢!
 
判断是否有数据接收到啊... 你接收到的可能是空数据.
 
但是不能屏蔽系统的异常报告:
Project Ser.exe raised exception class EWriteError with message'stream
write error'

如果你是在IDE状态,跟你的IDE环境设置有关的,如果你把IDE的 Debugger Options...
中的有关异常捕捉的项设好就可以的。
你可以运行编译成的可执行文件看有没有异常抛出?
 
try
SUDP2.ReadStream(TmpStream);
except
Application.MessageBox('截屏未成功!','提示',mb_ok);
end;
但是不能屏蔽系统的异常报告:
Project Ser.exe raised exception class EWriteError with message'stream
write error'

这个是肯定的

你单独运行编译好的程序就不会了
 
可以了,谢谢!
 
但在上面
raise;
的位置应该加上: Exit;
否则还会报错
 
顶部