【Rust】定义自己的错误类型
Rust 定义自己的错误类型是为了方便使用 Result<T, E> 或者 Result<T, Box<dyn std::error::Error>>,以下例子可以作为参考。如图所示,我定义了我的错误类型 WaveFormError,它是个枚举,每一项枚举代表一种具体错误。别人使用我的库的时候,我的库只会返回这个错误类型,因此方便设计程序的遇到错误的条件处理流程。
为了能把这个错误装入 Box<dyn std::error::Error>,我们需要这一句:impl std::error::Error for 我的错误类型 {}
为了在报错的时候,能够以文本的形式报错,我需要实现它的 fmt() 函数,因此要写以下代码:impl std::fmt::Display for 我的错误类型 {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
我的错误类型::枚举1 => write!(f, "错误原因1"),
我的错误类型::枚举2 => write!(f, "错误原因2"),
我的错误类型::枚举3(特殊理由) => write!(f, "错误原因3{特殊理由}"),
我的错误类型::枚举4 => write!(f, "错误原因4"),
}
}
}
在库里开发的时候,一般都用 Result<T, E> 方便调用者检测到错误后调用其它的方案解决问题;但是如果调用者根本不看文档而直接输入了离谱的参数,那就直接 panic 吧。
页:
[1]