async-rs / async-std

Async version of the Rust standard library
https://async.rs
Apache License 2.0
3.97k stars 342 forks source link

Unbable to catch panics in a spawned task #1052

Open rtumac opened 1 year ago

rtumac commented 1 year ago

I am using the spawn_and_log_error function from the a-chat example. Unfortunately, this function is not able to capture panics in the spawned tasked. The async-std book mentions that catching panics in the spawned task and reacting with custom behavior is possible. If using spawn_and_log_error is the wrong approach to achieve that, could someone point me in the right direction?

fn spawn_and_log_error<F>(fut: F) -> task::JoinHandle<()>
where
    F: Future<Output = Result<()>> + Send + 'static,
{
    task::spawn(async move {
        if let Err(e) = fut.await {
            eprintln!("{}", e)
        }
    })
}
notgull commented 1 year ago

smol-rs/async-task#37 (not yet published) would probably resolve this issue