C ++ исключения могут быть обработаны только в коде C ++.Им никогда не должно быть позволено покинуть мир C ++ (т. Е. Интерфейс C кода C ++ никогда не должен позволять распространяться исключениям).Даже небезопасно позволять исключению C ++ распространяться через слой кода C между двумя модулями C ++ (например, когда функция C ++ вызывает функцию C, которая в свою очередь вызывает функцию C ++).
Один изПричиной этого является то, что не существует стандарта того, как должны реализовываться исключения C ++, поэтому модули C ++ совместимы только в двоичном формате, если они скомпилированы одним и тем же компилятором (в той же версии).Таким образом, код на любом другом языке не может быть настроен для обработки исключений C ++.
В этом случае (библиотека C ++, интерфейс C, вызванный из Java) вам придется перехватывать исключение C ++, распространять информацию черезинтерфейс C (например, используя коды возврата ошибок), проверьте его в Java и сгенерируйте там исключение.