首页 > 其他分享 >Rust中 不可恢复的错误 和 可恢复的错误 - 学习随笔

Rust中 不可恢复的错误 和 可恢复的错误 - 学习随笔

时间:2023-01-01 14:23:05浏览次数:39  
标签:错误 恢复 assert Rust println main fn Result

关于程序语言中的Error,一般可以分为错误和异常。

错误和异常的区别:

1. 错误,一般是指程序员有能力解决的问题;

2. 异常,是指程序员无法解决的问题或者是说特定的代码逻辑错误;

 

在Rust中,分为 不可恢复的错误 (异常) 和 可恢复的错误(错误)。

如何产生不可恢复的错误:

示例:

// 1. 使用 panic! 宏
fn main() {
  panic!("error");
  println!("unreachable");
}

// 2. 断言(宏)
// 常用的 assert! , assert_eq!
fn main() {
  // assert!(1 == 2);
  assert_eq(1, 2);
}

// 3. 未实现的代码
// 声明一个临时未声明函数体的函数
fn add(_a: u32, _b: u32) -> u32 {
  unimplemented!()
}

fn main() {
  let _val = add(0, 1);
}

// 4. 不可达的代码
fn main() {
  unreachable!()
}

 

如何产生可恢复的错误:

示例

// 1. 利用Rust中的 Result 枚举
fn main() {
  // 成功后的响应结果
  let success: Result<u32, &'static str> = Result::Ok(0);
  println!("{:?}", success);

  // 失败后的返回
  let fail: Result<u32, &'static str> = Result::Err("error");
  println!("{:?}", fail);
}

// or
fn main() {
  let res = std::fs::read("/a/b");
  match res {
    Ok(val) => println!("{:?}", std::str::from_utf8(&val).unwrap()),
    Err(err) => println!("{:?}", err),
  }
}

 

标签:错误,恢复,assert,Rust,println,main,fn,Result
From: https://www.cnblogs.com/fanqshun/p/17018042.html

相关文章