Delphi DLL异常关闭我的应用程序

时间:2011-04-15 13:03:43

标签: delphi exception dll exception-handling delphi-2010

我在Delphi 2010应用程序中加载了Delphi 2010 DLL。它在大多数情况下都能正常工作。但是有一些异常从DLL中逃脱(即使是那些由try..except块处理的异常)并且我的应用程序崩溃而没有错误消息,根本没有任何信息。我所说的例外就像AV,不像开发人员提出的例外。我试过用SafeLoadLibrary加载DLL而没有运气。我也有app和DLL源代码。我没有发布DLL或应用程序源代码,因为我不能,他们受版权保护(我真的希望我能)。

我能做些什么来避免内部DLL异常导致我的应用程序崩溃?

修改

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

1 个答案:

答案 0 :(得分:1)

你要求的是不可能的。 DLL与执行进程共享相同的内存空间。因此,要么做任何事情都会导致应用程序崩溃。

你确实有正确的想法,因为你的DLL需要尽其所能。它需要在申请流程领域成为一个好公民。

你可以做些好事。

  • 使用try / except块包装每个导出的函数,并优雅地处理异常。
  • 在测试期间,使用SafeMM检查您可能没有找到的内存问题。
  • 确保您没有通过Delphi托管类型