我需要在程序运行时出现恐慌并且不关闭程序。例如,如何在这里捕获恐慌并打印 \xe2\x80\x9cHello, World\xe2\x80\x9d?:
\nfn main() {\n let v = vec![1, 2, 3];\n\n v[99];\n println!("Hello, World");\n}\nRun Code Online (Sandbox Code Playgroud)\n
isa*_*tfa 23
您可以用来std::panic::catch_unwind捕捉放松恐慌,但请务必先阅读文档:
fn main() {
let v = vec![1, 2, 3];
let panics = std::panic::catch_unwind(|| v[99]).is_err();
assert!(panics);
println!("Hello, World");
}
Run Code Online (Sandbox Code Playgroud)
如果你不知道索引在运行时是否有效,可以使用get代替[]索引。Some()如果元素存在或None不存在,这将返回一个选项:
if let Some(x) = v.get(99) {
}
Run Code Online (Sandbox Code Playgroud)
或者:
match v.get(99) {
Some(x) => {
},
None => {
}
}
Run Code Online (Sandbox Code Playgroud)
如果这是一个更一般的问题,并且给定的代码片段只是一个示例,那么正确的答案是你不这样做——恐慌不是为了控制流。如果需要从错误中恢复,则应使用返回 aResult或 的方法Option。
| 归档时间: |
|
| 查看次数: |
8571 次 |
| 最近记录: |