Я привык к программированию на Delphi. В этой системе аппаратное исключение с плавающей запятой, например, деление на ноль, переполнение и т. д. приводит к возникновению собственного исключения Delphi. Механизм состоит в том, что аппаратные исключения не маскируются, и эти аппаратные исключения преобразуются с помощью Delphi RTL в собственные исключения Delphi.
Мое приложение имеет подключаемую архитектуру, и многие из моих клиентов пишут подключаемые модули с использованием компилятора MS C ++. Когда в коде плагина C ++ клиента происходит ошибка с плавающей запятой, это выпрыгивает из кода C ++ и в обработчик исключений в моем Delphi-коде. Это затрудняет для автора плагина диагностику того, где в их коде проблема, потому что, насколько я могу судить, они не могут перехватить эти исключения, поскольку они не являются исключениями C ++.
Можно ли как-нибудь установить в коде C ++ какую-либо опцию, чтобы компилятор C ++ преобразовывал исключения с плавающей запятой в исключения C ++? Или я должен замаскировать исключения в коде C ++ и вручную проверить ошибки?
И, кроме того, как можно написать надежный научный и числовой код, если стандартные инструменты C ++ игнорируют ошибки с плавающей запятой? Это похоже на явную слабость, или я что-то упустил?