Ícone do site Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Manipulação robusta de exceções no C ++ Builder 10.4.2

close up broken egg isolated on white background

close up broken egg isolated on white background

Liberação de qualidade

O C ++ Builder 10.4.2 traz alguns ótimos recursos que acreditamos que realmente irão ajudá-lo – o maior sendo ‘ dividir DWARF ‘, uma maneira de reduzir o uso de memória no vinculador removendo informações de depuração. Se você tem projetos que ultrapassam os limites do vinculador, verifique: isso pode resolver seus problemas (consulte esta postagem do blog .) No entanto, o RAD Studio 10.4.2 no geral também foi um ‘lançamento de qualidade’. Na verdade, apesar de 10.4.1 ser a versão voltada para a qualidade e 10.4.2 para os recursos de que você precisa, corrigimos mais problemas em 10.4.2 do que em 10.4.1!

E o C ++ Builder não é exceção.

Tratamento de exceções C ++

Este trocadilho maravilhoso apresenta o trabalho de tratamento de exceções que fizemos em 10.4.2. Se for muito longo, aqui está o TLDR: 10.4.2 oferece aos seus aplicativos uma estabilidade muito alta e um comportamento mais correto ao lidar com exceções.

Analisamos categorias de relatórios de problemas que recebemos e também fazemos muito trabalho que nos ajuda a encontrar problemas internamente. Parte desse trabalho é por meio do suporte a bibliotecas C ++ : usar código externo é uma boa maneira de garantir que nossa cadeia de ferramentas seja compatível. Por causa dessas análises, em 10.4.2 revisamos muito de nosso tratamento de exceções para Windows.

Os cenários que observamos são:

Muitos desses cenários, especialmente entre módulos com links diferentes, podem se tornar complexos. Um dos principais motivos é lidar com a desalocação de uma exceção ou metadados de exceção no RTL. Por exemplo, suponha que uma DLL, que está totalmente vinculada estaticamente e tem sua própria cópia do RTL, lance uma exceção. Como um EXE, que também está estaticamente vinculado à sua própria cópia do RTL, ou dinamicamente vinculado mas, portanto, ainda tem uma cópia diferente do RTL para a DLL, pode lidar com a liberação de memória associada à exceção?

No entanto, em 10.4.2, lidamos com esses cenários e suportamos aplicativos em que todos os módulos são vinculados estaticamente ou todos estão dinamicamente vinculados. Não oferecemos suporte a exceções entre módulos em combinações de RTL dinâmico / estático em um único aplicativo.

Isso significa que em 10.4.2 você deve ver um comportamento de tratamento de exceções significativamente melhorado e um grande número de problemas de qualidade resolvidos para exceções no módulo, exceções entre módulos, onde os módulos são todos estáticos ou dinamicamente vinculados, para OS, C ++ e SEH exceções, e em Win32 e Win64 – uma matriz de teste massiva.

Com cada lançamento, pretendemos melhorar constantemente o C ++ Builder, e o 10.4.2 é – pode-se dizer – excepcional.

Sair da versão mobile