我注意到,在SysUtils.pas中定义的EStackOverflow在Delphi 2009中被标记为已弃用。我检查过,它在2007年也被标记为已弃用。我在这里有一个Delphi 7安装盘,但我想我会问是否任何人都知道它何时被弃用。

此外,有谁知道为什么,取而代之的是什么?我写了一个测试应用程序,通过递归导致Stack Overflow,我仍然得到一个EStackOverflow异常,但如果我专门为它添加一个处理程序,那么我得到

  

[DCC警告] Unit57.pas(85):W1000符号'EStackOverflow'已弃用

我知道EStackOverflow来自EExternal,我可以捕获EExternal并检查STATUS_STACK_OVERFLOW的ExceptionCode,但这似乎没必要,因为它仍然会抛出EStackOverflow异常。

这只是为了阻止我在我自己的代码中抛出EStackOverflow吗?

(是的,我意识到在一个名为 StackOverflow 的网站上提出关于 EStackOverflow 的问题的讽刺意味,是的我是完全认真的。)

有帮助吗?

解决方案

我这里没有说D5,但我几乎不记得已弃用的指令 只出现在D6上。

至于StackOverflow异常,我认为它已被弃用,因为它仅用于Delphi运行时环境来提升它。

编辑:基于所有答案的汇总,当引入Deprecated关键字时,在Delphi 6中不推荐使用EStackOverflow。

其他提示

就像在.NET中一样,你真的无法捕获StackOverflow异常,你会恢复到什么程序?如果您需要捕获一个代码,那么您的代码很可能是错误的:)

我刚检查了我的Delphi 6,并且已经弃用了EStackOverflow。我不能在这里访问旧版本的Delphi。

我无法帮助您解决原因或可能的替代方案。

在Delphi 5中,它还没有被弃用。

编辑:实际上,在Delphi 5中,'弃用'不是保留字。

  

这只是为了阻止我在我自己的代码中抛出EStackOverflow吗?

更重要的是,我认为这意味着您不应该设计代码来依赖它在未来版本中抛出。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top