面试题答案
一键面试- panic!宏在错误处理流程中的角色:
- 不可恢复错误处理:在Rust中,
panic!
宏用于指示程序遇到了不可恢复的错误。当panic!
宏被调用时,它会打印错误信息,并开始展开(unwinding)栈,这意味着函数调用会逐步回退,清理局部变量等资源。如果没有catch_unwind
机制(在一些特定场景下使用),最终程序会终止。它与Result
类型所处理的可恢复错误不同,Result
允许程序在遇到错误时选择继续执行不同的逻辑分支,而panic!
表示程序当前状态已无法正常继续运行。
- 不可恢复错误处理:在Rust中,
- 常见使用场景:
- 索引越界:
fn main() { let vec = vec![1, 2, 3]; let element = vec[10]; // 这里会触发panic!,因为索引10超出了vec的有效范围 println!("The element is: {}", element); }
- 空指针解引用:
fn main() { let ptr: *const i32 = std::ptr::null(); let value = unsafe { *ptr }; // 尝试解引用空指针,会触发panic! println!("The value is: {}", value); }
- 索引越界: