【问题标题】:How long has EStackOverflow been deprecated and what replaces it?EStackOverflow 被弃用了多长时间,它的替代品是什么?
【发布时间】:2012-06-19 23:48:50
【问题描述】:

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

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

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

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

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

(是的,我意识到在一个名为 StackOverflow 的网站上提出关于 EStackOverflow 的问题具有讽刺意味,是的 我是认真的强>.)

【问题讨论】:

  • 我试图用谷歌搜索堆栈溢出问题,我得到了大量指向 stackoverflow.com 的链接... :-) 但我确实设法找到了这个。

标签: delphi exception deprecated stack-overflow


【解决方案1】:

我这里没有 D5 可说,但我几乎不记得 deprecated 指令 只出现在 D6。

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

编辑:根据所有答案的汇总,当引入 Deprecated 关键字时,EStackOverflow 在 Delphi 6 中已被弃用。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我实际上想要一行写着“on EStackOverflow do raise;”所以我没有抓住它。但你可能是对的。相反,我决定捕获 EExternal 并检查 ExceptionCode 的 STATUS_STACK_OVERFLOW
    【解决方案3】:

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

    我无法帮助您解释原因或可能的替代品。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-09
          • 2012-05-07
          • 1970-01-01
          • 1970-01-01
          • 2016-05-25
          • 1970-01-01
          • 2019-04-05
          • 1970-01-01
          相关资源
          最近更新 更多