我正在编写一个使用SysUtils.LoadPackage动态加载包的程序。其中一些软件包是第三方的,并且在调用InializePackage时性能不佳并且失败。
我希望我的程序在这些失败后继续运行。我见过两种不同的行为:
关于如何从这些失败中优雅地恢复的任何想法?
答案 0 :(得分:2)
这可能会增加您的加载时间,但您可以创建一个程序,只需尝试加载和初始化程序包,并返回主应用程序可以解释(可能通过消息)成功/失败的结果。这样,如果它失败了它将不会取消你的主应用程序,但是如果它成功,你将加载并初始化包两次。
编辑:作为优化,您可以存储特定文件名和包版本的成功/失败,以便将来运行程序的速度会快得多。
答案 1 :(得分:1)
您可以编写自己的包加载程序。当你忽略所有IFDEF时,这是一个非常简短的例行程序。它基本上加载库,验证它是否已加载,然后在try块中调用InitializePackage。如果InitializePackage引发异常,则会再次卸载该库。如果您有自己的包加载器,则可以根据需要处理异常。
然而,话虽如此,我同意克雷格的说法,这不一定是个好主意。如果一个软件包编写得很糟糕,以至于它在initialization
部分爆炸,这应该是如此简单以至于不会出现任何错误,那么您是否真的希望代码首先插入到您的程序中? ?最好的办法可能是尝试让第三方开发人员修复他们破碎的代码。