Error handling “如何删除默认值”;“错误”;从主结果处理程序
我正在尝试创建自己的自定义错误,但我不希望Rust自动在错误消息前面添加Error handling “如何删除默认值”;“错误”;从主结果处理程序,error-handling,rust,main,boilerplate,Error Handling,Rust,Main,Boilerplate,我正在尝试创建自己的自定义错误,但我不希望Rust自动在错误消息前面添加Error:。我该怎么做 代码: 使用std::error::error; 使用std::fmt; #[导出(调试)] 枚举自定义错误{ 试验 } impl fmt::显示自定义错误{ fn fmt(&self,f:&mut fmt::Formatter)->fmt::Result{ 匹配自我{ CustomError::Test=>write!(f,“Test”) } } } fn main()->结果{ Err(Cust
Error:
。我该怎么做
代码:
使用std::error::error;
使用std::fmt;
#[导出(调试)]
枚举自定义错误{
试验
}
impl fmt::显示自定义错误{
fn fmt(&self,f:&mut fmt::Formatter)->fmt::Result{
匹配自我{
CustomError::Test=>write!(f,“Test”)
}
}
}
fn main()->结果{
Err(CustomError::Test)?;
好(())
}
预期输出(标准):
测试
实际输出(标准偏差):
错误:测试
错误:
前缀是由添加的。避免该错误的最简单方法是使main()
返回()
,然后自己在main()
中处理错误。例如:
fn foo() -> Result<(), CustomError> {
Err(CustomError::Test)?;
Ok(())
}
fn main() {
if let Err(e) = foo() {
eprintln!("{:?}", e);
}
}
fn foo()->结果{
Err(CustomError::Test)?;
好(())
}
fn main(){
如果让Err(e)=foo(){
eprintln!(“{:?}”,e);
}
}
如果您可以使用不稳定的功能,还可以
- 在自定义结果类型上实现
和终止
特征,这将允许您在尝试
中使用原始代码,但自定义其行为。(对于这个简单的案例,我觉得这太过分了。)main()
- 从main返回一个
,它允许您指示ExitCode
或ExitCode::SUCCESS
。您还可以使用ExitCode::FAILURE
设置退出代码,但我不知道有什么方法可以访问stable Rust中依赖于平台的成功和失败代码std::process::exit()
在这种情况下,进程将退出一个错误代码,你可以考虑在main中处理错误而不是传播。我不知道你的意思是什么,你能解释一下吗?我确实在测试这个过程,通过在结果中强制输入一个错误代码!谢谢你的澄清!谢谢你的提醒!我还研究了这一点:(这也显示了类似的答案)。把这个放在这里,以备其他人需要!;)