Rust 中异步函数 send_post() 错误处理和调试
Rust 中异步函数 send_post() 错误处理和调试
问题:
在 Rust 代码中,如果 send_post() 函数执行失败,该如何捕获错误并打印错误信息?
解答:
-
捕获错误:
在
main()函数中,使用if let Ok(res) = send_post().await语句判断send_post()函数是否执行成功。如果返回Ok,则打印结果;如果返回Err,则执行else语句。 -
打印错误信息:
在
else语句中,使用println!("Error {:?}", e);打印具体的错误信息。
代码示例:
async fn main() {
if let Ok(res) = send_post().await {
println!("Result is {:#?}", res);
} else {
println!("Error {:?}", e);
}
}
async fn send_post() -> Result<serde_json::Value, reqwest::Error> {
let client = reqwest::Client::new();
let mut header = HeaderMap::new();
header.insert("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/110.0.0.0 Safari/537.36".parse().expect("Cannot parse User-Agent header value"),
);
header.insert("referer", "https//www.covery.com".parse().expect("Cannot parse referer header value"));
header.insert("sec-ch-ua", "sec-ch-ua".parse().expect("Cannot parse sec-ch-ua header value"));
let mut data = HashMap::new();
data.insert("prompt", "hello");
Ok(client.post("https://free-api.cveoy.com/v3/completions")
.headers(header)
.json(&data)
.send()
.await?
.json::<serde_json::Value>()
.await?)
}
说明:
send_post()函数返回Result<serde_json::Value, reqwest::Error>类型,表示函数执行成功时返回serde_json::Value,失败时返回reqwest::Error错误信息。if let Ok(res) = send_post().await语句用于捕获send_post()函数执行结果,并将成功返回的结果赋值给res变量。else { println!("Error {:?}", e); }语句用于捕获send_post()函数执行失败的错误信息,并将其打印到控制台。e是send_post()函数返回的Err类型,其中包含具体的错误信息。
总结:
通过上述方法,你可以轻松地捕获 send_post() 函数执行过程中的错误,并打印出具体的错误信息,以便排查问题。
原文地址: https://www.cveoy.top/t/topic/lBMo 著作权归作者所有。请勿转载和采集!