MST

星途 面试题库

面试题:Rust中try方法异常处理的基本使用

请描述在Rust中如何使用try方法进行异常处理。假设你有一个函数`read_file`,它尝试读取一个文件并返回文件内容,可能会遇到文件不存在等错误。请用代码示例展示如何使用try方法优雅地处理这些可能的错误。
49.2万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

在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)
}

在上述代码中:

  1. File::open("example.txt")?尝试打开文件,如果打开失败,会直接返回Err,其中包含错误信息。?操作符会将错误值从当前函数返回,而无需手动编写match语句来处理错误。
  2. file.read_to_string(&mut contents)?尝试将文件内容读取到contents字符串中,如果读取失败,同样会返回Err
  3. 如果所有操作都成功,函数会返回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,则打印错误信息。