Как давно EStackOverflow устарел и что его заменяет?
-
08-07-2019 - |
Вопрос
Я заметил, что EStackOverflow, как определено в SysUtils.pas, помечен как устаревший в Delphi 2009.Я проверил, и в 2007 году он также был помечен как устаревший.У меня здесь есть установочный диск Delphi 7, но я подумал, что хотел бы спросить, знает ли кто-нибудь, когда он устарел.
Кроме того, кто-нибудь знает, почему и что его заменяет?Я написал тестовое приложение, которое вызывает переполнение стека посредством рекурсии, и я все еще получаю исключение EStackOverflow, но если я добавлю обработчик специально для него, то получу
[Предупреждение DCC] Unit57.pas(85):Символ W1000 "EStackOverflow" устарел
Я знаю, что EStackOverflow происходит от EExternal, и что я мог бы перехватить EExternal и проверить ExceptionCode на STATUS_STACK_OVERFLOW, но это кажется ненужным, поскольку оно все равно выдает исключение EStackOverflow.
Это просто для того, чтобы отговорить меня от использования EStackOverflow в моем собственном коде?
(Да, я понимаю иронию того, что задаю вопрос о Обратный поток на веб-сайте под названием Переполнение стека, и да Я совершенно серьезен.)
Решение
У меня здесь нет D5, чтобы сказать, но я едва помню устаревший директива появилась только на D6.
Что касается исключения StackOverflow, я думаю, что оно устарело, потому что его может вызвать только среда выполнения Delphi.
Редактировать:Основываясь на совокупности всех ответов, EStackOverflow устарел в Delphi 6, когда было введено ключевое слово Deprecated.
Другие советы
Точно так же, как в .NET, вы действительно не можете поймать исключение StackOverflow, к чему вы восстанавливаетесь?Ваш код, скорее всего, неправильный, если вам нужно его отловить :)
Я только что проверил свой Delphi 6, и EStackOverflow уже устарел.Здесь у меня нет доступа к более старым версиям Delphi.
Я не могу помочь вам с объяснением причин или возможной заменой.
В Delphi 5 это еще не устарело.
Редактировать:На самом деле, в Delphi 5 "устаревший" не является зарезервированным словом.
Это просто для того, чтобы отговорить меня от использования EStackOverflow в моем собственном коде?
Что еще более важно, я думаю, это означает, что вы не должны разрабатывать код так, чтобы он зависел от его использования в будущих версиях.