发布于2026-07-12 阅读(0)
扫一扫,手机访问
Rust的错误处理,说白了就是靠Result类型和?操作符撑起来的。很多人刚接触Rust时会被它的错误处理吓到,其实核心逻辑非常直白——Result是个枚举,两个变体:Ok(T)表示成了,返回一个值;Err(E)表示砸了,返回一个错误。而?操作符呢?它就像个“甩锅神器”,遇到错误直接往上一抛,直到有人接住为止。

来看一个实际例子,你就全明白了:
use std::fs::File;
use std::io::{self, Read};
fn read_file_contents(file_path: &str) -> Result {
let mut file = File::open(file_path)?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
Ok(contents)
}
fn main() {
match read_file_contents("example.txt") {
Ok(contents) => println!("File contents: {}", contents),
Err(error) => eprintln!("Error reading file: {}", error),
}
}
这里定义了一个read_file_contents函数,接收文件路径,返回Result。注意看File::open和file.read_to_string后面都跟了?——这就是关键:只要其中任何一步失败,?会立刻把错误往上抛,函数直接返回Err,不会卡在中间让人手忙脚乱。最后用Ok(contents)包装成功值。
在main里,用match拆包处理Result:成功就打印文件内容,失败就打印错误信息。干净利落。
Rust的错误处理说到底就这点东西——Result配合?,再加上一层match或者unwrap,基本上能覆盖绝大多数场景。当然,实际项目中还会涉及自定义错误类型、Box、anyhow这些高级玩法,但基础骨架就是这段代码展示的逻辑。你可以直接拿它当模板,改改路径和逻辑,就能用到自己的项目里。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8