文章目录
0.env
ubuntu1804
1.可恢复错误、不可恢复错误
1.可恢复错误
类似try…catch中“异常”的概念,如文件打开失败等情况。
use std::fs:File; //use 系统库
/* demo_2 : Result */
let f = File::open("kkkkk.log"); //打开不存的一个文件
match f {
Ok(file) => {
println!("successful");
}
Err(file) => { // 上述文件打开失败后执行此语句块
println!("failed");
}
}
2.不可恢复错误
无法被执行的错误,类似"error"的概念,如“越界访问”等操作。这种错误会导致系统异常并终止程序。
/// main.rs源码,通过panic! 宏来打印一个error
fn main() {
/* demo_1 : panic */
panic!("error occured!");
println!("Hello, world!");
}
执行后log如下:
注解:第一行打印了报错log的位置和信息,
第二行提示定义环境变量来查看detail。
thread 'main' panicked at 'error occured!', src/main.rs:6:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
demo源码
/// file:main.rs
use std::fs::File;
fn main() {
/* demo_1 : panic */
/*
panic!("error occured!");
println!("Hello, world!");
*/
/* demo_2 : Result */
let f = File::open("kkkkk.log");
match f {
Ok(file) => {
println!("successful");
}
Err(file) => {
println!("failed");
}
}
}
2.可恢复错误转不可恢复错误处理
1.unwrap()
use std::fs::File;
fn main() {
let f1 = File::open("test.tmp").unwrap();
}
2.expect(message: &str)
use std::fs::File;
fn main() {
let f2 = File::open("test.tmp").expect("failed to open!");
}
3.kind()与可恢复错误的传递
待补充