dll中内存出错:raised too many consecutive exceptions.(200分)

  • 主题发起人 主题发起人 heart_one
  • 开始时间 开始时间
H

heart_one

Unregistered / Unconfirmed
GUEST, unregistred user!
1个exe程序,2个dll文件,其中dll中包含有各自的窗体,并且一个dll有用控件MyComponents连接mysql数据库,有下面3个操作:
1.exe文件调用2个dll文件,并创建其窗体,连数据库的那个dll在创建时建立了数据库的连接;
2.exe文件调用2个dll文件,并创建其窗体,连数据库的那个dll在创建时没有建立数据库的连接;
3.exe文件只调用有数据库连接的那个dll,数据库建立连接或没有建立连接;
上面3步编译均通过,并正常运行,但是只有第一步在运行10分钟左右后就出现内存读错误,引起异常:raised too many consecutive exceptions. 该释放的都释放了,不知道为什么出现这么奇怪的问题,不知道那位dfw知道或碰到过类似的问题?
 
没有人碰到过类似的问题么?应该是在dll中连接数据库的操作导致的,可是不知道怎么做才可以解决.
 
自己解决了,原因是在做dll时的application句柄的传递问题导致的。
 
应该是数据库连接dll的问题吧. 你捕捉一下异常, outputdebugs't'ri'n'g.
 
确实是连了数据库才发生的,不过已经发现问题所在。
请问下你说说的异常怎么扑捉?程序在正常运行过程中报错,之间我的程序什么操作都没有,直观上看不到任何触发事件,这样能捕捉么?
 
用ApplicationEvents控件截获程序的异常错误 (我的笔记)
http://www.delphibbs.com/keylife/iblog_show.asp?xid=21381

除了用try...except...end; 外还可以用ApplicationEvents控件,该控件在additional页里,用于捕获异常信息,在其OnException事件里写上处理代码就可以防止你的程序在运行期出现大错误了。
简单实例:
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
RecordException(sender,E);//异常处理代码
end;

procedure TForm1.RecordException(sender:tobject;E: Exception);
begin
if (E.Message='由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。')then
begin
application.messagebox('记录重复,请检查输入的数据后再进行操作','提示',MB_OK+MB_ICONINFORMATION);
exit;
end;
end;
 
曾经用EurekaLog_Bug检测过程序得一些异常,可是有时总得不到正确的错误所在。原来d7自带的就有一个异常触发控件,用来看看先。各位dfw平时还有哪些异常检测手段啊?
 
后退
顶部