< 返回版块

yecloud 发表于 2022-07-27 17:45

比如在读config的时候,发现某个值不符合要求,直接退出程序报个错

目前的做法比较糙,直接panic!(" Wrong loglevel!")

优雅的做法应该是怎样呢?

评论区

写评论
Easonzero 2022-07-27 21:00

提一个建议可供参考:

Result主要处理的还是不可原地panic的错误, 需要原地panic的错误都建议直接通过expect/unwrap_or_else处理

如果对panic信息格式有要求, 建议使用 https://docs.rs/human-panic/1.0.3/human_panic/ 这类的库, 或者自己hook panic

苦瓜小仔 2022-07-27 18:41

竟然第一时间不考虑 Result,这可是它存在的意义啊 :)

https://doc.rust-lang.org/stable/rust-by-example/error.html

type Error = String;
fn main() -> Result<(), Error> {
    let config_var = 100;
    
    if config_var < 128 {
        return Err(format!(
            "the value `{config_var}` is incorrect in the config file"
        ));
    }

    Ok(())
}

其他一些做法在 std::process 模块下,用途是什么,限制是什么,最简样例,文档写得很清楚了。比如

gorust21 2022-07-27 18:03

match处理一下

tch1121 2022-07-27 17:59

打印后手动退出吧

printnl!("");

process::exit(0);
1 共 4 条评论, 1 页