有什么方法可以从LoadPackage故障中恢复?

时间:2011-08-25 19:09:26

标签: delphi packages

我正在编写一个使用SysUtils.LoadPackage动态加载包的程序。其中一些软件包是第三方的,并且在调用InializePackage时性能不佳并且失败。

我希望我的程序在这些失败后继续运行。我见过两种不同的行为:

  1. 它会从包中的某个位置抛出异常并终止。
  2. 抛出异常并将控制权返回给调用者,但下次调用LoadPackage时程序停止响应。
  3. 关于如何从这些失败中优雅地恢复的任何想法?

2 个答案:

答案 0 :(得分:2)

这可能会增加您的加载时间,但您可以创建一个程序,只需尝试加载和初始化程序包,并返回主应用程序可以解释(可能通过消息)成功/失败的结果。这样,如果它失败了它将不会取消你的主应用程序,但是如果它成功,你将加载并初始化包两次。

编辑:作为优化,您可以存储特定文件名和包版本的成功/失败,以便将来运行程序的速度会快得多。

答案 1 :(得分:1)

您可以编写自己的包加载程序。当你忽略所有IFDEF时,这是一个非常简短的例行程序。它基本上加载库,验证它是否已加载,然后在try块中调用InitializePackage。如果InitializePackage引发异常,则会再次卸载该库。如果您有自己的包加载器,则可以根据需要处理异常。

然而,话虽如此,我同意克雷格的说法,这不一定是个好主意。如果一个软件包编写得很糟糕,以至于它在initialization部分爆炸,这应该是如此简单以至于不会出现任何错误,那么您是否真的希望代码首先插入到您的程序中? ?最好的办法可能是尝试让第三方开发人员修复他们破碎的代码。