Manejo de Errores en C++

#[cxx::bridge]
mod ffi {
    unsafe extern "C++" {
        include!("example/include/example.h");
        fn fallible(depth: usize) -> Result<String>;
    }
}

fn main() {
    if let Err(err) = ffi::fallible(99) {
        eprintln!("Error: {}", err);
        process::exit(1);
    }
}
  • Las funciones de C++ declaradas para devolver un Result detectarán cualquier excepción en C++ y la devolverán como un valor Err a la función de llamada de Rust.
  • Si se produce una excepción desde una función externa de "C++" no declarada por el bridge de CXX para devolver Result, el programa llamará a std::terminate de C++. El comportamiento equivale a la misma excepción que se genera mediante una función noexceptde C++.