- Rust简介
- Rust的特点
- Rust开发环境安装
- Rust第一个程序
- 控制语句
- Rust所有权
- Rust结构体
- Rust枚举
- Rust模块
- Rust集合
- Rust错误处理
- Rust泛型与性状
- Rust智能指针
Rust错误处理
错误处理是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
的值为false
,assert!
断言中的条件为假。 因此,在运行时assert!
调用panic!
。
unreachable! :它用于无法访问的代码。 此宏很有用,因为编译器无法确定无法访问的代码。 在运行时由 unreachable! 执行。
下面来看一个简单的例子:
enum Value { Val, } fn get_number(_:Value)->i32 { } fn find_number(val:Value)-> &'static str { match get_number(val) { => "seven", 8=> "eight", _=> unreachable!() } } fn main() { println!("{}", find_number(Value::Val)); }
执行上面示例代码,得到以下结果 -
在上面的示例中,get_number()
函数返回的值为5
,它与每个模式匹配,但不与任何模式匹配。 因此,unreachable!
宏调用panic!
宏 。
上一篇:Rust字符串
下一篇:Rust不可恢复的错误