Я заметил, что EStackOverflow, как определено в SysUtils.pas, помечен как устаревший в Delphi 2009. Я проверил, и он также был отмечен как устаревший в 2007 году. У меня есть установочный диск Delphi 7, но я подумал, что спрошу, знает ли кто, когда он устарел.
Кроме того, кто-нибудь знает, почему и что его заменяет? Я написал тестовое приложение, которое вызывает переполнение стека через рекурсию, и я все еще получаю исключение EStackOverflow, но если я добавлю обработчик специально для него, я получу
[DCC Warning] Unit57.pas(85): W1000 Symbol 'EStackOverflow' is deprecated
Я знаю, что EStackOverflow происходит от EExternal, и что я могу перехватить EExternal и проверить ExceptionCode для STATUS_STACK_OVERFLOW, но это кажется ненужным, поскольку он по-прежнему генерирует исключение EStackOverflow.
Это просто для того, чтобы отговорить меня от использования EStackOverflow в моем собственном коде?
(Да, я понимаю иронию вопроса о EStackOverflow на веб-сайте под названием Переполнение стека, и да, Я совершенно серьезно.)





Я только что проверил свой Delphi 6, и EStackOverflow уже устарел. У меня здесь нет доступа к более старым версиям Delphi.
Я не могу помочь вам с объяснением причины или возможной заменой.
Is this just to discourage me from throwing an EStackOverflow in my own code?
Что еще более важно, я думаю, это означает, что вы не должны разрабатывать код, который будет зависеть от его использования в будущих версиях.
В Delphi 5 это еще не устарело.
edit: На самом деле в Delphi 5 слово «устаревший» не является зарезервированным.
У меня нет D5, чтобы сказать, но я почти не помню директиву устарел появился только на D6.
Что касается исключения StackOverflow, я думаю, что оно устарело, потому что оно предназначено только для среды выполнения Delphi.
Обновлено: исходя из совокупности всех ответов, EStackOverflow был объявлен устаревшим в Delphi 6, когда было введено ключевое слово Deprecated.
Как и в .NET, вы не можете поймать исключение StackOverflow, к чему вы восстанавливаетесь? Ваш код, скорее всего, неправильный, если вам нужно его отловить :)
Я действительно хочу иметь строку, которая гласит: «на EStackOverflow действительно поднять;» так что я не улавливаю. Но может ты и прав. Вместо этого я решил перехватить EExternal и проверить ExceptionCode на STATUS_STACK_OVERFLOW
Я попытался найти в Google проблемы с переполнением стека и получил множество ссылок на stackoverflow.com ... :-), но мне все же удалось найти эту.