如果想使一个可恢复错误按不可恢复错误处理,Result 类提供了两个办法:unwrap() 和 expect(message: &str) : 实例 usestd::fs::File; fnmain(){ letf1=File::open("hello.txt").unwrap(); letf2=File::open("hello.txt").expect("Failed to open."); } 这段程序相当于在 Result 为 Err 时调用 ...
这块在get_current_date中有两个函数调用(get和json)会返回Result值。因为get_current_date并没有返回错误时要做什么的上下文,所以使用模式匹配将错误传回main. 有时候在使用模式匹配去处理,多个嵌套的错误处理可能会让代码看起来非常混乱,所以我们可以引入?来重写上述代码. ...
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { repr: Os { code: 2, message: "No such file or directory" } }', src/libcore/result.rs:906:4 还有另一个类似于 unwrap 的方法它还允许我们选择 panic! 的错误信息:expect。使用 expect 而不是 unwrap 并...
("{}", result.expect("我期待一个结果,不是错误"));// 返回结果letresult:Result<&str, &str> =Err("发生错误");println!("{}", result.expect("我期待一个结果,不是错误"));/* thread 'main' panicked at '我期待一个结果,不是错误: "发生错误"', src\main.rs:9:27 stack backtrace: 0:...
Rust Result.expect用法及代码示例本文简要介绍rust语言中 core::result::Result.expect 的用法。 用法 pub fn expect(self, msg: &str) -> T 返回包含的 Ok 值,使用 self 值。 Panics 如果值为 Err ,则发生Panics,Panics消息包括传递的消息和 Err 的内容。 例子 基本用法: let x: Result = Err("emergen...
这些Result类型会被用来编码可能出现的错误处理信息。和其他类型的值相同,Result类型的值也定义了一系列的方法,我们刚刚调用的expect就是其中之一。假如io::Result实例的值是Err,那么expect方法就会中断当前的程序,并将传入的字符串参数显示出来。read_line方法有可能因为底层操作系统的错误而返回一个Err结果。相应地,假...
pub fn expect(self, msg: &str) -> T 返回包含的 Ok 值,使用 self 值。 Panics 如果值为 Err ,则发生Panics,Panics消息包括传递的消息和 Err 的内容。 例子 基本用法: let x: Result = Err("emergency failure"); x.expect("Testing expect"); // panics with `Testing expect: emergency failure`...
expect方法: 与unwrap的使用方式一样,允许我们传参指定panic!的信息 1.2 使用?操作符传播错误 经常在编写一个函数实现时会调用另一个返回Result的函数,除了在这个函数中处理错误之外,还可以选择将错误传播到上游调用者,这就是传播错误。 rust还提供了强大的?操作符,如果我们只想要传播错误,而不想直接处理,可以使用?
Result 与可恢复的错误 大部分错误并没有严重到需要程序完全停止执行。有时,一个函数会因为一个容易理解并做出反应的原因失败。 例如,如果因为打开一个并不存在的文件而失败,此时我们可能想要创建这个文件,而不是终止进程。 ❝可以使用Result类型来处理潜在的错误,Result是一个「枚举类型」。 ❞ ...
next() .expect("Could not found a '.'"); let i = ImportantExcerpt { part: first_sentence }; } 生命周期的省略我们知道: 每个引用都有生命周期 需要为使用生命周期的函数或Struct指定生命周期参数生命周期省略规则在Rust引用分析中所编入的模式称为生命周期省略规则。 这些规则无需开发者来遵守 它们...