«

Rust - panic!

ljierui 发布于 阅读:116 技术杂谈


不可恢复的错误与panic!

1、Rust的错误处理

2、错误的分类

3、Rust没有其他语言的异常的机制

1、不可恢复错误

1、当panic!宏执行

2、为了应对展开和清理调用栈

3、想让二进制文件更小,就可以把展开改成中止

2、panic!宏的使用

1、panic!可能出现的地方

2、可以通过panic!宏来回溯出现问题的代码

3、可以通过环境变量设置调试信息

4、在调试的时候,cargo run 必须不能使用--release

fn main() {
    panic!("出现错误了");
}

3、可恢复的错误

1、Result<T,E>枚举

enum Result<T,E>{
    Ok(T),
    Err(E),
}
// T : 表示操作成功的情况,OK变体里返回的数据的类型
// E : 表示操作失败的情况,Err变体里返回的错误的类型
use std::fs::File;
fn main() {
    // 这个返回的值就是Resule枚举类型
    let f = File::open("1.txt");
}

4、处理Result枚举的结果,使用match

use std::fs::File;

fn main() {
    // 这个返回的值就是Resule枚举类型
    let f = File::open("1.txt");

    // 处理结果
    match f {
        Ok(file) => file,
        Err(err) => panic!(
            "打开文件失败{:?}",{err})
    };
}

5、传播错误

?运算符:用来传播错误的一种快捷方式

6、总体原则

1、在定义一个可能失败的函数的时候,优先考虑返回的是Result
2、否则就panic!

rust语言学习

推荐阅读: