結束代碼
程式並非總是能成功執行。當錯誤發生時,你應該確保能正確發送必要的資訊。除了 告訴使用者關於錯誤的資訊,在多數的系統中,當一個程式結束時,它也同時會發送一個結束代碼(一個介於 0 到 255 間的整數,這與多數平台相容)。你應該試著發送正確的代碼來表示你程式的狀態。例如,在理想的狀態下(你的程式執行成功),它應該以 0
結束。
然而,當錯誤發生時,事情就變得有點複雜了。在實際應用中,許多工具會在發生常見錯誤時以 1
結束。目前,當程式發生恐慌(panic)時,Rust 會設定結束代碼為 101
。此外,人們已在他們的程式中做了很多事。
所以,該怎麼做?BSD 生態系統已收集了一份他們的結束代碼通用定義(你可以在 這裡 找到)。Rust 函式庫 exitcode
提供了相同的代碼,隨時可用於你的應用程式。請參閱其 API 文件以取得可使用的可能值。
在你將 exitcode
相依性加入你的 Cargo.toml
之後,你可以像這樣使用它
fn main() {
// ...actual work...
match result {
Ok(_) => {
println!("Done!");
std::process::exit(exitcode::OK);
}
Err(CustomError::CantReadConfig(e)) => {
eprintln!("Error: {}", e);
std::process::exit(exitcode::CONFIG);
}
Err(e) => {
eprintln!("Error: {}", e);
std::process::exit(exitcode::DATAERR);
}
}
}