MST

星途 面试题库

面试题:Rust中错误传播与自定义错误类型

编写一个Rust程序,包含多个函数调用,每个函数都可能返回错误。要求在调用链中正确传播错误,并使用`?`操作符简化错误处理代码。自定义一个错误类型,该类型实现`std::error::Error` trait,且包含错误消息字段。程序最后处理可能出现的所有错误并输出相应的错误信息。
13.3万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::error::Error;
use std::fmt;

// 自定义错误类型
#[derive(Debug)]
struct MyError {
    message: String,
}

impl fmt::Display for MyError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "{}", self.message)
    }
}

impl Error for MyError {}

// 第一个可能返回错误的函数
fn function1() -> Result<i32, MyError> {
    Err(MyError {
        message: "Function 1 error".to_string(),
    })
}

// 第二个可能返回错误的函数,调用function1
fn function2() -> Result<i32, MyError> {
    let result = function1()?;
    Ok(result + 1)
}

// 主函数,调用function2并处理错误
fn main() {
    match function2() {
        Ok(result) => println!("Result: {}", result),
        Err(e) => eprintln!("Error: {}", e),
    }
}