std::panic::catch_unwind
возвращает любое возвращенное закрытие в случае, если оно не запанировало c:
fn main() {
let result = std::panic::catch_unwind(|| {
println!("hello!");
42
});
println!("{:?}", result);
let result = std::panic::catch_unwind(|| {
panic!("oh no!");
});
println!("{:?}", result);
}
( Постоянная ссылка на игровую площадку )
Это отпечатки
hello!
Ok(42)
Err(Any)
Я хотел бы сохранить catch_unwind
по соображениям безопасности
Я не очень понимаю, как catch_unwind
помогает с безопасностью : Если вы выполняете неизвестный код, он может завершить вашу программу способами, которые невозможно перехватить с помощью catch_unwind
даже в безопасном коде . Нет абсолютно никакой гарантии, что catch_unwind
будет вызван. catch_unwind
не обеспечивает никакой изоляции.