2011-04-15 64 views
0

我有一个Delphi 2010 DLL在Delphi 2010应用程序中加载。它在大多数时间都能正常工作。但是有一些异常可以从DLL中逃脱(即使是那些被try..except块处理的异常),并且我的应用程序崩溃,没有错误消息,根本没有任何信息。我说的异常就像AV,不像开发人员提出的例外。我曾尝试加载DLL SafeLoadLibrary没有运气。我也有应用程序和DLL源代码。我不张贴DLL或应用程序源代码,因为我不能,他们是版权(我真的希望我可以)。Delphi DLL异常关闭我的应用程序

有什么我可以做,以避免一个内部的DLL异常崩溃我的应用程序?

编辑

我没有不允许DLL引发异常的方式。可能会发生,并不是所有的代码都是完美的。这可能是不可避免的,该DLL引发一个异常,但它不应该崩溃的主要应用程序。想象一下,例如,你使用的是第三方的dll,你没有源代码。它不是一件好事,当这个DLL崩溃出于某种原因,你的主要应用程序被杀害。它必须有一种不允许发生的方式。

+0

试图在一个小程序中复制错误,并在这里发布代码。 – RBA 2011-04-15 13:22:29

+0

我会尝试,但有时他们会关闭我的应用程序,有时他们不会。 – 2011-04-15 13:24:48

+3

你应该有一个Try/Except围绕你的DLL中每个导出函数的主体。 – 2011-04-15 13:46:13

回答

1

你所要求的是不可能的。 DLL与执行进程共享相同的内存空间。这样做可能会导致应用程序崩溃。

你确实有正确的想法,因为你的DLL需要做它能做的。它需要成为应用程序领域的一个好公民。

有些事情你可以做得很好。

  • 用try/except块包装每个导出的函数,并优雅地处理异常。
  • 在测试过程中,使用SafeMM检查您可能没有发现的内存问题。
  • 确保你没有通过德尔福管理类型
相关问题