Rust 专题
您的位置:rust > Rust专题 > Rust错误处理
Rust错误处理
作者:--    发布时间:2019-11-20

错误处理是rust确定出错的可能性并确认在代码进行编译之前采取某些操作的机制。
此机制使程序更加健壮,因为能够在部署生产代码之前发现并处理错误。
rust编程语言不包含异常。

rust中有两种类型的错误:

  • 不可恢复的错误。
  • 可恢复的错误。

  • 可恢复的错误: 可恢复的错误是报告给用户的错误,用户可以重试该操作。 完全停止该过 程的可恢复错误并不严重。 它由result <t,e>表示。 可恢复错误的示例是“找不到文件”。t&e是通用参数。
    t->这是一种值,在成功的情况下返回一个’ok’变量。
    e->这是一种错误类型,在具有err变体的故障情况下返回。
  • 不可恢复的错误: 当rust报告一个不可恢复的错误时,那就是!宏停止执行程序。例如:“除以零”是不可恢复错误的示例。

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

可恢复错误是可以某种方式恢复的错误,而不可恢复错误是无法以任何方式恢复的错误。
下面来看一下预期行为的情景:

"100".parse();

在上述情况下,"100"是一个字符串,因此不确定上述情况是否有效,这是预期的行为。 因此,它是一个可恢复的错误。

意外的行为

assert! :当想要声明它是真时使用。 如果它不正确和错误,则程序停止执行。

下面来看一个简单的例子:

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

执行上面示例代码,得到以下结果:

在上面的例子中,x的值为falseassert!断言中的条件为假。 因此,在运行时assert!调用panic!

unreachable! :它用于无法访问的代码。 此宏很有用,因为编译器无法确定无法访问的代码。 在运行时由 unreachable! 执行。

下面来看一个简单的例子:

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,它与每个模式匹配,但不与任何模式匹配。 因此,unreachable!宏调用panic!宏 。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册