请注意我使用的是 Rust 0.13.0 的夜间构建
首先,我是 Rust 的初学者,并且仍在尽可能多地获取有关该语言的信息。在我的整个消费过程中,我发现很少的一个主题是错误处理。因此,当我第一次尝试在我的代码中使用外部库时,我很快就对应该如何使用返回给我的 Material 感到困惑。
为了帮助解释我的困惑,我将引用 rust-url图书馆。这是在 documentation 中找到的一些示例代码:
use url::{Url, InvalidIpv6Address};
assert!(Url::parse("http://[:::1]") == Err(InvalidIpv6Address))
这对我来说非常简单。但是,我的下一个问题是:其他错误怎么办?我进一步研究了 ParseError
枚举,发现了 15 种以上可能由格式错误的 URL 产生的其他类型的错误。
那么,我的问题是,处理所有这些不同情况的正确方法是什么?我是否应该有一个冗长的匹配来为每个匹配发出专门的消息?有没有办法一次性消耗掉它们?
如果这个问题没有一个单一的答案,我深表歉意,但谷歌并没有说清楚,我希望在我继续以错误的方式对我的项目的其余部分进行编码之前获得对此的反馈。
最佳答案
ParseError
枚举实现了 Show
特性,带有 a custom useful message for each variant ,所以当你到达实际处理解析错误的最后一步时(例如,在以你认为合适的任何方式操作 Result
之后),你可以将错误可能性视为一个黑框:
fn download(s: &str) {
match Url::parse(s) {
Ok(url) => { ... }
Err(e) => {
println!("Could not parse '{}'. {}.", s, e);
}
}
}
将打印类似 Could not parse 'http://[::1]' 的内容。无效的 IPv6 地址。
。
(我提交了 #43 关于使 Show
消息小写,以便它在更复杂的错误消息中更好地流动。)
关于url - 捕获 Rust 中的错误(Rust URL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26539766/