rust的错误处理 - 前端笔记-extern crate core; use std::fs::File; use std::panic; fn main() { ...

学习笔记

点滴记忆
回忆过往
首页>> web后端 >>rust的错误处理 - 前端笔记
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");
}

×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:前端笔记 » rust的错误处理

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)