【rust】part-8 错误处理

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()与可恢复错误的传递

待补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过得精彩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值