Rust错误处理指南:精通Result、Option与unwrap/expect

还在用 unwrap()?同事们都偷偷在学这套 Rust 错误处理"组合拳",再不看就晚了! 你好,未来的 Rust 大神。我知道你为何而来。你听说 Rust 是一头性能猛兽,安全可靠,于是满怀激情地跳了进来。然后,你遇到了它的第一个下马威——错误处理。 和那些用 try-catch 给你铺好柔软安全网的语言不同,Rust 直接塞给你一把利剑和一个盾牌——Result 和 Option。它对你说:“上吧,勇士!命运掌握在你自己手中。” 很多新手没走两步,就掉进了各种陷阱。但你不同,因为你正在阅读这篇文章。今天,我就带你拆解 Rust 错误处理的五大“天坑”,并传授你一套能让同事们惊呼“优雅”的武林秘籍。 目录 第一式:戒掉心魔 unwrap() 第二式:正视编译器的"唠叨" 第三式:告别"金字塔",用 ? 变身优雅魔术师 第四式:不在公共场所"引爆炸弹" 第五式:分清 Option 和 Result 总结:你的"封神"之路 第一式:戒掉心魔 unwrap(),别让你的程序"自爆" 每个 Rust 新手都曾对 .unwrap() 爱不释手。它就像恶魔的低语,在你耳边说:“别担心,这里肯定有值,直接拆开用吧!” 于是,你写下了这样的“YOLO 代码”: fn main() { let input = "hello"; // 砰!你的程序在这里灰飞烟灭 let num: i32 = input.parse().unwrap(); } 这可不是什么可以被捕获的“异常”,这是程序的“猝死”,是 panic!,是拉响手雷与代码同归于尽。在生产环境里这么干,你的同事会顺着网线来揍你。 大神操作: 真正的勇士,敢于直面可能发生的“错误”。 用 match 来做一次精密的“外科手术”: fn main() { let input = "hello"; match input.parse::<i32>() { Ok(num) => println!("转换成功: {num}"), Err(e) => println!("出错了,凡人: {e}"), } } 或者,给它一个“备胎”,如果失败了就用默认值: ...

December 19, 2024 · 3 min · 439 words · 梦兽编程