📜  Rust错误处理

📅  最后修改于: 2021-01-08 13:50:26             🧑  作者: Mango

锈错误处理

  • 错误处理是一种机制,在这种机制中,Rust确定错误的可能性并确认您在代码进行编译之前已采取了某些措施。
  • 这种机制使程序更加健壮,因为它使您能够在部署代码以进行生产之前发现并处理错误。
  • Rust编程语言不包含异常。

Rust中有两种错误类型:

  • 无法恢复的错误:
  • 可恢复的错误

  • 可恢复错误:可恢复错误是报告给用户的错误,用户可以重试该操作。可恢复的错误并不是很严重,无法完全停止该过程。它由Result 表示。可恢复错误的示例是“找不到文件”。其中,T&E是通用参数。 T- >这是一种值的类型,在成功情况下会返回“ OK”变量。 E- >这是一种错误类型,在失败情况下使用“ Err”变体返回。
  • 不可恢复的错误:当Rust报告一个不可恢复的错误时,那就慌了!宏停止执行程序。例如: “被零除”是不可恢复错误的一个示例。

可恢复错误与不可恢复错误

可恢复错误是可以某种方式恢复的错误,而不可恢复错误是无法以任何方式恢复的错误。

让我们看一下预期行为的场景:

 "100".parse();

在上述情况下,“ 100”是一个字符串,因此我们无法确定上述情况是否有效。这是预期的行为。因此,这是一个可恢复的错误。

  • 意外行为

断言!断言!当我们要声明某件事为真时使用。如果它不正确和足够错误,则程序将停止执行。它引起了恐慌! ,如果在运行时表达式未评估为true。

让我们看一个简单的例子:

 fn main()
{
let x : bool = false;
assert!(x==true);
}

输出:

在上面的示例中,x的值为false,并且assert中的条件为!宏为假。因此,一个断言!引发恐慌!在运行时。

无法到达! :无法到达!宏用于无法访问的代码。该宏非常有用,因为编译器无法确定无法访问的代码。无法访问的代码由无法访问决定!在运行时。

让我们看一个简单的例子:

              enum Value
{
  Val,
}

fn get_number(_:Value)->i32
{ 
   5
}
fn find_number(val:Value)-> &'static str
{
  match get_number(val)
  {
    7 => "seven",
    8=> "eight",
    _=> unreachable!()
  }
}

fn main()
{
  println!("{}", find_number(Value::Val));
}

输出:

在上面的示例中,由get_number()函数返回的值是5,它与每个模式都匹配,但与任何模式都不匹配。因此,遥不可及!宏引起了恐慌!宏。