Avatar ·

如何在Rust中正确创建和使用自定义错误类型?

大家好!我是Rust新手,正在尝试理解错误处理。我读了这本书,但仍然不知道如何为库正确创建自己的错误类型。 我有一个简单的配置文件解析器。我希望它能返回清晰的错误:"第X行语法错误"、"未知参数"、"输入/输出错误"。目前我是这样做的: ```rust enum ConfigError { IoError, ParseError, UnknownParam, } ``` 但这很不方便——没有关于错误发生位置的信息。而且我无法同时使用`?`处理`std::io::Error`和我的自定义类型。 我读过关于`std::error::Error`、`Display`和`Debug` trait的内容,但不知道如何正确实现它们。我看到很多人使用`thiserror` crate,但我想先理解手动实现的方法。 请告诉我如何在Rust中正确设计自定义错误类型?如何使其与标准错误类型和`?`运算符兼容?是否需要某种