錯誤處理
#[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);
}
}
- 所宣告用來傳回
Result
的 C++ 函式會擷取 C++ 端的任何擲回例外狀況,並將其當做Err
值傳回至發出呼叫的 Rust 函式。 - 假使例外狀況是從 CXX 橋接器未宣告的外部「C++」函式擲回,藉此傳回
Result
,則程式會呼叫 C++ 的std::terminate
。此行為等同於透過noexcept
C++ 函式擲回的相同例外狀況。