Как долго EStackOverflow устарел и что его заменяет? - PullRequest
9 голосов
/ 12 ноября 2008

Я заметил, что EStackOverflow, как определено в SysUtils.pas, помечен как устаревший в Delphi 2009. Я проверил, и он также был помечен как устаревший в 2007 году. У меня есть установочный диск Delphi 7 здесь, но я подумал, что спросить, Кто-нибудь знает, когда это устарело.

Кроме того, кто-нибудь знает почему и что его заменяет? Я написал тестовое приложение, которое вызывает переполнение стека через рекурсию, и я все еще получаю исключение EStackOverflow, но если я добавлю обработчик специально для него, я получу

[Предупреждение DCC] Unit57.pas (85): W1000 Символ «EStackOverflow» устарел

Я знаю, что EStackOverflow происходит от EExternal, и что я могу перехватить EExternal и проверить ExceptionCode на STATUS_STACK_OVERFLOW, но это, по-видимому, не нужно, поскольку оно по-прежнему вызывает исключение EStackOverflow.

Это просто чтобы отговорить меня от добавления EStackOverflow в мой собственный код?

(Да, я понимаю иронию вопроса о EStackOverflow на веб-сайте с именем StackOverflow , и да Я совершенно серьезно . )

Ответы [ 5 ]

4 голосов
/ 14 ноября 2008

Как и в .NET, вы не можете поймать исключение StackOverflow, к чему вы восстанавливаете? Ваш код, скорее всего, неверен, если вам нужно его перехватить:)

4 голосов
/ 12 ноября 2008

У меня нет D5 здесь, чтобы сказать, но я едва помню директиву устарела появился только на D6.

Что касается исключения StackOverflow, я думаю, что оно устарело, потому что оно предназначено только для среды выполнения Delphi.

РЕДАКТИРОВАТЬ: Основываясь на совокупности всех ответов, EStackOverflow был объявлен устаревшим в Delphi 6, когда было введено ключевое слово Deprecated.

2 голосов
/ 12 ноября 2008

В Delphi 5 это еще не устарело.

edit: На самом деле, в Delphi 5 «не рекомендуется» не является зарезервированным словом.

2 голосов
/ 12 ноября 2008

Я только что проверил свой Delphi 6, и EStackOverflow уже устарел. У меня нет доступа к более старым версиям Delphi.

Я не могу помочь вам с объяснением причины или возможной замены.

1 голос
/ 12 ноября 2008

Это просто чтобы отговорить меня от добавления EStackOverflow в мой собственный код?

Что еще более важно, я думаю, это означает, что вы не должны разрабатывать код, который будет зависеть от его добавления в будущих версиях.

...