extern crate core;
use std::fs::File;
use std::panic;
fn main() {
println!("错误处理");
// Option<T> 处理有值无值
fn Op(x: Option<i32>, y: Option<i32>) -> Option<i32> {
if x.is_none() && y.is_none() {
None
} else if x.is_none() {
y
} else if y.is_none() {
x
} else {
Some(x.unwrap() + y.unwrap())
}
}
let o = Op(Some(10), Some(20));
println!("{:?}", o); // Some(30)
let o = Op(Some(10), None);
println!("{:?}", o); // Some(10)
let o = Op(None, None);
println!("{:?}", o); // None
// Result<T> 用于处理可恢复的情况
// 用于打开文件返回值
// let f = File::open("./1.txt");
// match f {
// Ok(v) => {
// println!("{:?}", v);
// }
// Err(e) => {
// println!("{}", e); // 系统找不到指定的文件。 (os error 2)
// }
// }
// let f = File::open("./1.txt")?; // ? 自动把错误抛上去 自己返回 OK就行
// let f = File::open("./1.txt").unwrap(); // 报错 不处理让其直接 panic掉
// let f = File::open("./1.txt").expect("文件找不到"); // 报错 提示报错原因
// Panic!() 用于处理不可恢复的情况
// panic!("程序报错");
let v = vec![1,2,3,4,5];
// 捕获错误,但是不建议
panic::catch_unwind(|| {
v[88];
println!("捕获panic报错")
});
println!("111");
}
发表评论