我正在構建一個位元幣克隆,它需要能夠連接到其他套接字并在它們之間發送資訊。如何嘗試連接到另一個套接字,如果套接字沒有回應,只需繼續執行代碼而不是使整個程式崩潰?
這就是我認為代碼的樣子:
use std::io::prelude::*;
use std::net::TcpStream;
fn main()
{
for node in nodes {
let mut stream = TcpStream::connect(node).unwrap();
if successful_connection {
break;
}
}
}
uj5u.com熱心網友回復:
問題是您使用unwrap(). 從它的檔案:
如果值為 ,則發生恐慌,并由' 值
Err提供恐慌訊息。Err
此函式的目的是在操作失敗時中止您的程式,因此:
因為這個函式可能會出現恐慌,所以通常不鼓勵使用它。相反,更喜歡使用模式匹配并
Err顯式處理大小寫,或呼叫unwrap_or、unwrap_or_else或unwrap_or_default.
如果您只想在操作成功的情況下做某事,而在其他情況下什么也不做,那么if let您最好的朋友是:
if let Ok(stream) = TcpStream::connect(node) {
// Do something with `stream`
}
如果您還想處理錯誤情況,可以使用match:
match TcpStream::connect(node) {
Ok(stream) => {
// Do something with `stream`
}
Err(error) => {
// Handle the error
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/485246.html
