結束代碼

程式並非總是能成功執行。當錯誤發生時,你應該確保能正確發送必要的資訊。除了 告訴使用者關於錯誤的資訊,在多數的系統中,當一個程式結束時,它也同時會發送一個結束代碼(一個介於 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);
        }
    }
}