Site icon Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Надежная обработка исключений в C ++ Builder 10.4.2

close up broken egg isolated on white background

close up broken egg isolated on white background

Качественный релиз

C ++ Builder 10.4.2 предлагает несколько замечательных функций, которые, как мы полагаем, действительно помогут вам — самая большая из них — « разделенный DWARF », способ уменьшить использование памяти в компоновщике путем удаления отладочной информации. Если у вас есть проекты, которые выходят за пределы возможностей компоновщика, проверьте это: он может решить ваши проблемы (см. Этот пост в блоге ). Однако в целом RAD Studio 10.4.2 также была «качественной версией». На самом деле, несмотря на то, что 10.4.1 — это выпуск, нацеленный на качество, а 10.4.2 — на необходимые вам функции, мы исправили больше проблем в 10.4.2, чем в 10.4.1!

И C ++ Builder не исключение.

Обработка исключений C ++

Этот замечательный каламбур знакомит с работой по обработке исключений, которую мы проделали в 10.4.2. Если это слишком долго, вот TL; DR: 10.4.2 дает вашим приложениям очень высокую стабильность и более правильное поведение при обработке исключений.

Мы анализируем категории отчетов о проблемах, которые получаем, а также выполняем много работы, которая помогает нам находить проблемы внутри компании. Часть этой работы осуществляется за счет поддержки библиотек C ++ : использование внешнего кода — хороший способ гарантировать совместимость нашей инструментальной цепочки. Благодаря этому анализу в 10.4.2 мы пересмотрели большую часть нашей обработки исключений для Windows.

Мы рассмотрели следующие сценарии:

Многие из этих сценариев, особенно кросс-модульные с различным связыванием, могут быть сложными. Одна из основных причин — обработка освобождения исключения или метаданных исключения в RTL. Например, предположим, что библиотека DLL, которая полностью статически связана и имеет собственную копию RTL, выдает исключение. Как может EXE, который также статически связан со своей собственной копией RTL или динамически связан, но, следовательно, по-прежнему имеет другую копию RTL для DLL, обрабатывать освобождение памяти, связанной с исключением?

Тем не менее, в 10.4.2 мы обрабатываем эти сценарии и поддерживаем приложения, в которых все модули статически связаны или все динамически связаны. Мы не поддерживаем межмодульные исключения в сочетаниях динамического / статического RTL в одном приложении.

Это означает, что в 10.4.2 вы должны увидеть значительно улучшенное поведение обработки исключений и большое количество проблем с качеством, решенных для внутримодульных исключений, межмодульных исключений, когда все модули статически или все динамически связаны, для ОС, C ++ и SEH. исключения, и как для Win32, так и для Win64 — массивная тестовая матрица.

С каждым выпуском мы стремимся постоянно улучшать C ++ Builder, и 10.4.2, можно сказать, является исключительным.

Exit mobile version