我有一个对象,我做了很多事情,然后通过调用 TidyUp() 方法来完成,该方法显示一些关于发生了什么的统计信息。
作为内部测试的一部分,我想检测这些对象何时被创建,但在程序退出之前没有整理,在这种情况下会死掉。
因此,我为在 TidyUP() 中设置的对象添加了一个标志,并为如果未设置此标志而死的类添加了一个 DESTROY 子例程。
这一切都很好,但它有一个不幸的副作用。如果程序中出现其他问题,导致 die 被调用,那么全局销毁会触发我的 DESTROY,它会注意到对象没有被整理并死亡。问题是我此时丢失了原始的 die 消息。
所以我想检测破坏是由于骰子还是正常程序退出而发生的,只有在后一种情况下才添加我的新骰子。
我看过Detecting global destroy in Perl但我认为这没有帮助,因为我想检测是什么触发了全局破坏。