Pregunta

Noté que EStackOverflow, como se define en SysUtils.pas, está marcado como obsoleto en Delphi 2009. Lo comprobé y también fue marcado como obsoleto en 2007. Tengo un disco de instalación de Delphi 7 aquí, pero pensé en preguntar si Alguien sabe cuándo quedó en desuso.

Además, ¿alguien sabe por qué y qué lo reemplaza? Escribí una aplicación de prueba que causa un desbordamiento de pila a través de la recursividad, y todavía obtengo una excepción EStackOverflow, pero si agrego un controlador específicamente para eso, obtengo

  

[Advertencia DCC] Unit57.pas (85): el símbolo W1000 'EStackOverflow' está en desuso

Sé que EStackOverflow desciende de EExternal, y que podría atrapar EExternal y verificar ExceptionCode para STATUS_STACK_OVERFLOW, pero eso parece innecesario ya que todavía arroja la excepción EStackOverflow.

¿Es esto solo para desanimarme de lanzar un EStackOverflow en mi propio código?

(Sí, me doy cuenta de la ironía de hacer una pregunta sobre EStackOverflow en un sitio web llamado StackOverflow , y sí lo digo completamente en serio .)

¿Fue útil?

Solución

No tengo D5 aquí para decir, pero apenas recuerdo la directiva obsoleta apareció solo en D6.

En cuanto a la excepción StackOverflow, creo que está en desuso porque solo es para que el entorno de tiempo de ejecución de Delphi lo aumente.

EDITAR: basado en el conjunto de todas las respuestas, EStackOverflow quedó en desuso en Delphi 6 cuando se introdujo la palabra clave En desuso.

Otros consejos

Al igual que en .NET, realmente no puede detectar una excepción de StackOverflow, ¿a qué se recupera? Es muy probable que su código sea incorrecto si necesita atrapar uno :)

Acabo de comprobar mi Delphi 6 y EStackOverflow ya está en desuso. No tengo acceso a versiones anteriores de Delphi aquí.

No puedo ayudarte con el por qué o el posible reemplazo.

En Delphi 5 todavía no está en desuso.

editar: en realidad, en Delphi 5, 'obsoleto' no es una palabra reservada.

  

¿Es esto solo para desanimarme de lanzar un EStackOverflow en mi propio código?

Más importante aún, creo que esto significa que no debe diseñar código para depender de que se lance en futuras versiones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top