gpt4 book ai didi

rust - 在 Rust tokio 代码中传播 panic 的推荐方法是什么?

转载 作者:行者123 更新时间:2023-12-04 03:31:11 28 4
gpt4 key购买 nike

现在我的 panic 正在被吞噬。在我的用例中,我希望它使整个程序崩溃并打印堆栈跟踪。我应该如何配置它?

最佳答案

panic 通常不会被吞下,而是在等待 tokio::task::JoinHandle 时作为错误返回。从 tokio::task::spawn() 返回或 tokio::task::spawn_blocking()并可以进行相应处理。
如果 Tokio 运行时发生 panic ,一条错误消息会打印到 stderr,如下所示:“线程 'tokio-runtime-worker' 在 'Panicking...' 处 panic ,src\main.rs:26:17”。如果您使用环境变量 RUST_BACKTRACE 运行二进制文件设置为 1 还会打印堆栈跟踪。
与所有 Rust 程序一样,您可以使用 std::panic::set_hook() 设置自己的 panic 处理程序。如果任何线程在打印这样的 panic 信息后出现 panic ,让它退出:

let default_panic = std::panic::take_hook();
std::panic::set_hook(Box::new(move |info| {
default_panic(info);
std::process::exit(1);
}));

关于rust - 在 Rust tokio 代码中传播 panic 的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66790155/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com