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); } }

Speaker Notes

  • 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++.