Я знаю, что в Rust нет try/catch, и вы не можете выбросить скользящее сохранение из потока, который в настоящее время впадает в панику.
Я знаю, что вы не должны создавать и обрабатывать такие ошибки. Это, например, сакэ.
Тем не менее, мне интересно, какой лучший способ выздороветь от паники. Это то, что у меня есть сейчас:
use std::thread;
fn main() {
println!("Hello, world!");
let h = thread::spawn(|| {
thread::sleep_ms(1000);
panic!("boom");
});
let r = h.join();
match r {
Ok(r) => println!("All is well! {:?}", r),
Err(e) => println!("Got an error! {:?}", e)
}
println!("Exiting main!");
}
Есть ли лучший способ обработки ошибок из других потоков? Есть ли способ захватить сообщение о панике? Это говорит только о том, что ошибка имеет тип Any
. Спасибо!