yecloud 发表于 2022-07-27 17:45
比如在读config的时候,发现某个值不符合要求,直接退出程序报个错
目前的做法比较糙,直接panic!(" Wrong loglevel!")
优雅的做法应该是怎样呢?
提一个建议可供参考:
Result主要处理的还是不可原地panic的错误, 需要原地panic的错误都建议直接通过expect/unwrap_or_else处理
如果对panic信息格式有要求, 建议使用 https://docs.rs/human-panic/1.0.3/human_panic/ 这类的库, 或者自己hook panic
竟然第一时间不考虑 Result,这可是它存在的意义啊 :)
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 模块下,用途是什么,限制是什么,最简样例,文档写得很清楚了。比如
match处理一下
打印后手动退出吧
printnl!(""); process::exit(0);
评论区
写评论提一个建议可供参考:
Result主要处理的还是不可原地panic的错误, 需要原地panic的错误都建议直接通过expect/unwrap_or_else处理
如果对panic信息格式有要求, 建议使用 https://docs.rs/human-panic/1.0.3/human_panic/ 这类的库, 或者自己hook panic
竟然第一时间不考虑
Result
,这可是它存在的意义啊 :)https://doc.rust-lang.org/stable/rust-by-example/error.html
其他一些做法在 std::process 模块下,用途是什么,限制是什么,最简样例,文档写得很清楚了。比如
match处理一下
打印后手动退出吧