Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 如何使用Result::expect在恐慌之前记录消息?_Logging_Rust - Fatal编程技术网

Logging 如何使用Result::expect在恐慌之前记录消息?

Logging 如何使用Result::expect在恐慌之前记录消息?,logging,rust,Logging,Rust,对给定的消息感到恐慌。然而,我想在恐慌之前登录。假设我已经使用了facade和一个实现,我想做如下工作: //一个名为'result'的结果` 结果。像你期望的那样(| e |{ //假设'e'是一个错误实例并实现'Display'` 错误!(“发生错误:{}”,e); //还有这里的恐慌 }); 使用Rust 1.39.0有这样的解决方案吗?您可以尝试将map\u err与展开一起使用: fn main() { let result: Result<(), String>

对给定的消息感到恐慌。然而,我想在恐慌之前登录。假设我已经使用了facade和一个实现,我想做如下工作:

//一个名为'result'的结果`
结果。像你期望的那样(| e |{
//假设'e'是一个错误实例并实现'Display'`
错误!(“发生错误:{}”,e);
//还有这里的恐慌
});

使用Rust 1.39.0有这样的解决方案吗?

您可以尝试将
map\u err
展开一起使用:

fn main() {
    let result: Result<(), String> = Err("error message".into());
    result.map_err(|e| log::error!("Failed with: {}", e)).unwrap();
}

? 请注意,错误时的恐慌不是健壮的代码感谢“健壮的代码”注释。我是个新手(虽然我不是一个完全的编程新手)。我正在努力理解它。是的,我猜
恐慌
不是一个好主意。我还看到我可以从
main
返回
Result
,但它不符合代码库中的许多类型的错误。所以我认为使用
panic
总比不使用要好。尽管仍在等待其他答案,但可能有人提供了不同的观点。但这并不符合我的代码库中的许多类型的错误——请注意,失败并不是唯一的错误。我们鼓励您查看可用的库并选择一个适合您的库。谢谢您的回答。我将调查有关错误处理的板条箱。我知道Shepmaster是
snafu
的作者。是的,你也可以用那个板条箱。它可以派生自定义错误。如果您使用
无论如何
,您将需要
此错误
板条箱来派生自定义错误类型。
use anyhow::Error;

fn main() -> Result<(), Error> {
    let result: Result<(), Error> = Err(Error::msg("error message"));
    let unwrapped_result = result?;
    Ok(())
}