you can still capture uncaught C++ exception in C, there are existing mechanism, like SOH and even if your C compiler does not have it, you can get it from OS-level services/API.
Your C code may be part of a C-library having other mechanisms (e.g. in a framework like JNI, or some plugin mechanisms for web browsers, or media players, or SQL clients, or other language integration libraries (PHP, Python, .Net/Mono, PostScript engines, BPF for kernel integration, and so on) which almost always include such C library for their integration You could even have integration of Lua within another Lua acting as an isolation layer...
And if it's not enough, there are also architecture solutions (e.g. interrupt handlers, BIOS interfaces) that you can use in native (or virtualized) assembly.
you need a small generic handler in your C++ library that will forward the exception possibly as an error without necessary crashing the app with some forced exit() and loosing all current state. it's up to you to kwow how you'll recover, or what you'll still want to try saving to recover differently (such as by restarting the process or rebooting the device/OS, and let it perform cleanup at startup according to the state that could correctly be saved).