外部EXE如何捕获动态链接库文件的内部错误?(200分)

  • 主题发起人 主题发起人 bede7330
  • 开始时间 开始时间
B

bede7330

Unregistered / Unconfirmed
GUEST, unregistred user!
DLL文件内部计算的时候可能会出线错误,但是由于外部EXE在运行过程中碰到DLL内部错误时需要做一些自动提交错误报告之类的工作,所以不用能 try...except在 DLL内部捕获错误,但是在运行过程中,用ApplicationEvents无法捕获错误,跳出个 DLL内存地址错误有什么办法解决这个问题?
 
只能自己在DLL里全部完善好了。不过也可以给调用者发送定义好的消息,调用的时候把调用者的句柄和消息号传给DLL就行了;<br>这是我原来用过的一个类似的例子:<br>void CallRegist(HWND hWnd, UINT Msg, LPCTSTR sSiteID, int nThread);
 
这个方法不行的,DLL确实可以把错误传递通过消息到调用的EXE,但是接下去就出问题了,本来A-B-C-D这个是外部EXE的某个过程的运行步骤,其中B是调用DLL的某个方法,当B出错后发送消息给EXE,EXE处理完消息后,会继续C-D这两个步骤,这样就有问题了,应该出错后直接退出该过程才可以
 
自己用DBGHelp搞定吧,很多软件都用了这个,可以DUMP堆栈。
 
B用个回调函数调用DLL,这样根据DLL的执行情况来决定主程序是不是继续往下执行。
 
我觉得这是异常控制的问题,还是要把逻辑写好才能控制好少出错,在代码上多下功夫。
 
不是代码的问题,我把数据库连接和一些常用的函数写在DLL中,但是由于软件版本以及网络问题,总是有可能会存在异常错误出现的
 
1、出现错误是否继续执行主程序要考虑好。<br>&nbsp; &nbsp;( 目前接触的Dll出现异常,主程序会关掉)
 
后退
顶部