Pergunta

notei que EStackOverflow, conforme definido no SysUtils.pas é marcado como obsoleto em Delphi 2009. Eu verifiquei e ele também foi marcado como obsoleto em 2007. Eu tenho um Delphi 7 disco de instalação aqui, mas eu pensei que eu iria perguntar se alguém sabe quando foi substituído.

Além disso, alguém sabe por quê, eo que o substitui? Eu escrevi um aplicativo de teste que causa um estouro de pilha através de recursão, e eu ainda recebo uma exceção EStackOverflow, mas se eu adicionar um manipulador especificamente para ele, então eu recebo

[DCC aviso] Unit57.pas (85): Símbolo W1000 'EStackOverflow' está obsoleto

Eu sei que EStackOverflow desce do Eexterna, e que eu poderia armadilha Eexterna e verificar ExceptionCode para STATUS_STACK_OVERFLOW, mas que parece desnecessária uma vez que ainda lança a exceção EStackOverflow.

Este é apenas para me desencorajar de lançar uma EStackOverflow no meu próprio código?

(Sim, eu percebo a ironia de fazer uma pergunta sobre EStackOverflow em um site chamado StackOverflow , e sim eu sou completamente sério .)

Foi útil?

Solução

Eu não tenho D5 aqui para dizer, mas eu mal me lembro o deprecated directiva apareceu apenas em D6.

Quanto à exceção StackOverflow, eu acho que é obsoleto porque é apenas para ambiente de execução Delphi para aumentá-lo.

EDIT: Com base no agregado de todas as respostas, EStackOverflow foi depreciado em Delphi 6, quando a palavra-chave Deprecated foi introduzido.

Outras dicas

Assim como em .NET, você não pode realmente capturar uma exceção StackOverflow, o que você recuperar para? Seu código é provavelmente errado, se você precisa pegar um:)

Eu apenas verifiquei meu Delphi 6 e EStackOverflow já está obsoleta. Eu não tenho acesso a versões mais antigas do Delphi aqui.

Eu não posso ajudá-lo com o porquê ou a possível substituição.

Em Delphi 5 é ainda não substituído.

edit:. Na verdade, em Delphi 5, 'obsoleta' não é uma palavra reservada

Este é apenas para me desencorajar de lançar uma EStackOverflow no meu próprio código?

Mais importante, eu acho que isso significa que você não deve projetar código para depender dele que estão sendo jogados em versões futuras.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top