async-rs/async-std

Unbable to catch panics in a spawned task

rtumac opened this issue · 1 comments

rtumac commented

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

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