9

SysUtils.pas で定義されている EStackOverflow は、Delphi 2009 で非推奨としてマークされていることに気付きました。確認したところ、2007 年には非推奨としてマークされていました。Delphi 7 のインストール ディスクはここにありますが、いつわかるか誰かに尋ねようと思いました。それは廃止されました。

さらに、誰かが理由を知っていますか、そしてそれを置き換えるものは何ですか? 再帰によってスタック オーバーフローを引き起こすテスト アプリケーションを作成しましたが、それでも EStackOverflow 例外が発生しますが、それ専用のハンドラーを追加すると、

[DCC 警告] Unit57.pas(85): W1000 シンボル 'EStackOverflow' は非推奨です

EStackOverflow が EExternal から派生していること、および EExternal をトラップして ExceptionCode の STATUS_STACK_OVERFLOW をチェックできることはわかっていますが、それでも EStackOverflow 例外がスローされるため、これは不要のようです。

これは、自分のコードで EStackOverflow をスローするのを思いとどまらせるためだけですか?

(はい、 StackOverflowという Web サイトでEStackOverflowについて質問するのは皮肉なことだと思います。はい、私は完全に真剣です .)

4

5 に答える 5

4

ここで言うD5はありませんが、非推奨のディレクティブがD6にのみ表示されたことをほとんど覚えていません。

StackOverflowの例外については、Delphiランタイム環境でのみ発生するため、非推奨になっていると思います。

編集:すべての回答の集計に基づいて、Deprecatedキーワードが導入されたときにEStackOverflowはDelphi6で非推奨になりました。

于 2008-11-12T16:57:37.843 に答える
4

.NETの場合と同様に、StackOverflow例外を実際にキャッチすることはできませんが、何に回復しますか?あなたが1つをキャッチする必要がある場合、あなたのコードはおそらく間違っています:)

于 2008-11-14T20:41:46.073 に答える
2

Delphi 5 では、まだ推奨されていません。

編集: 実際、Delphi 5 では、「非推奨」は予約語ではありません。

于 2008-11-12T13:54:56.603 に答える
2

Delphi 6 を確認したところ、EStackOverflow は既に廃止されています。ここでは古いバージョンの Delphi にアクセスできません。

理由や可能な代替品についてはお答えできません。

于 2008-11-12T10:25:01.643 に答える
1

これは、自分のコードで EStackOverflow をスローするのを思いとどまらせるためだけですか?

さらに重要なことに、これは、将来のバージョンでスローされることに依存するようにコードを設計するべきではないことを意味すると思います。

于 2008-11-12T12:27:48.713 に答える