面试题答案
一键面试在Rust中,try
方法在Result
类型上使用,用于处理可能产生错误的操作。在Rust 1.13版本之后,推荐使用?
操作符,它的功能与try
类似,但语法更简洁。以下是使用try
方法(实际使用?
操作符示例,try
基本不再使用)处理read_file
函数可能出现错误的代码示例:
use std::fs::File;
use std::io::{self, Read};
fn read_file() -> Result<String, io::Error> {
let mut file = File::open("example.txt")?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
Ok(contents)
}
在上述代码中:
File::open("example.txt")?
尝试打开文件,如果打开失败,会直接返回Err
,其中包含错误信息。?
操作符会将错误值从当前函数返回,而无需手动编写match
语句来处理错误。file.read_to_string(&mut contents)?
尝试将文件内容读取到contents
字符串中,如果读取失败,同样会返回Err
。- 如果所有操作都成功,函数会返回
Ok(contents)
,其中contents
是文件的内容。
如果要调用这个函数并处理可能的错误,可以这样写:
fn main() {
match read_file() {
Ok(contents) => println!("File contents: {}", contents),
Err(e) => eprintln!("Error: {}", e),
}
}
在main
函数中,使用match
语句来处理read_file
函数返回的Result
类型。如果是Ok
,则打印文件内容;如果是Err
,则打印错误信息。