gpt4 book ai didi

delphi - 为什么要在对象方法中检查Assigned(self)?

转载 作者:行者123 更新时间:2023-12-03 14:44:53 25 4
gpt4 key购买 nike

我正在查看一些代码(Delphi 7),以下检查位于特定对象的每个方法调用的顶部:

if not Assigned(self) then
raise Exception.CreateRes(@sAbstractError);

{ Real code for this method}

我想这会阻止我尝试调用空对象指针上的方法。但无论如何,一旦我尝试访问成员(member)数据,我就会得到异常,对吧?

这是我以前从未见过的某种标准吗?有问题的对象派生自 TPersistent。

最佳答案

您可以在空指针上调用实例方法,尽管这不是您故意要做的事情。当发生这种情况时,执行会非常愉快地继续进行,直到需要访问实例数据,然后一切都会顺利进行。

在这种情况下,检查 nil 会在过程的顶部提醒您,以便您可以执行不同的操作,例如记录堆栈跟踪。或者您可以在加注线上设置一个断点,这样您就可以深入了解发生了什么。

即,如果我有一个特定的错误,我试图追踪使用 nil 引用的位置,我可能会这样做。

经常这样做让我觉得有一种代码味道。

关于delphi - 为什么要在对象方法中检查Assigned(self)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1040860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com