- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用同步代码时,我可以使用 panic::catch_unwind
像这样:
#[actix_rt::test]
async fn test_sync() -> Result<(), Error> {
println!("before catch_unwind");
let sync_result = panic::catch_unwind(|| {
println!("inside sync catch_unwind");
panic!("this is error")
});
println!("after catch_unwind");
assert!(sync_result.is_ok());
Ok(())
}
在处理在
catch_unwind
中执行的异步代码时,我该如何做同样的事情?堵塞?我无法弄清楚如何运行块,同时还能够在块之后运行一些代码并最终断言结果。
#[actix_rt::test]
async fn test_async() -> Result<(), Error> {
println!("before catch_unwind");
let async_result = panic::catch_unwind(|| async {
println!("inside async catch_unwind");
panic!("this is error")
}).await;
println!("after catch_unwind");
assert!(async_result.is_ok());
Ok(())
}
最佳答案
我不会 尝试直接使用它们。相反,使用 FutureExt::catch_unwind
和 StreamExt::catch_unwind
.
use futures::FutureExt; // 0.3.5
#[tokio::test]
async fn test_async() -> Result<(), Box<dyn std::error::Error>> {
println!("before catch_unwind");
let may_panic = async {
println!("inside async catch_unwind");
panic!("this is error")
};
let async_result = may_panic.catch_unwind().await;
println!("after catch_unwind");
assert!(async_result.is_ok());
Ok(())
}
关于rust - 如何在异步代码中使用 panic::catch_unwind?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63159442/
我正在用 Rust 编写一个跨平台(Linux/iOS/Android)库。如果我的库出现困惑,我希望应用程序继续正常工作而不是崩溃。为了做到这一点,我正在使用 catch_unwind ;它的结果包
使用同步代码时,我可以使用 panic::catch_unwind像这样: #[actix_rt::test] async fn test_sync() -> Result { println
如果使用set_hook,我们可以获得很多信息,尤其是堆栈跟踪 - 这非常有帮助。然而,使用 catch_unwind,我只得到一个 Result,它几乎不包含任何有用的信息。因此,我想知道如何使用
当我使用 cargo test 运行以下程序时: use std::panic; fn assert_panic_func(f: fn() -> (), msg: String) { let
我正在使用 panic::catch_unwind引起 panic : use std::panic; fn main() { let result = panic::catch_unwind
我有以下代码: use std::thread; use std::panic; pub fn main(){ thread::spawn(move || { panic::c
我是一名优秀的程序员,十分优秀!