- 错误处理是一种机制, 在这种机制中, Rust确定错误的可能性并确认你在代码进行编译之前已采取了某些措施。
- 这种机制使程序更加健壮, 因为它使你能够在部署代码以进行生产之前发现并处理错误。
- Rust编程语言不包含异常。
- 无法恢复的错误:
- 可恢复的错误
文章图片
- 可恢复的错误:可恢复的错误是报告给用户的错误, 用户可以重试该操作。可恢复的错误并不是很严重, 无法完全停止该过程。它由Result <
T, E>
表示。可恢复错误的示例是”
找不到文件”
。
其中, T&E是通用参数。
T-> 这是一种值的类型, 在成功情况下会返回” OK” 变量。
E-> 这是一种错误类型, 在失败情况下使用” Err” 变体返回。 - 不可恢复的错误:当Rust报告一个不可恢复的错误时, 那就慌了!宏停止程序的执行。例如:” 被零除” 是不可恢复错误的一个示例。
让我们看一下预期行为的场景:
"100".parse();
【Rust错误处理详细图解】在上述情况下, ” 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, 它与每个模式都匹配, 但与任何模式都不匹配。因此, 遥不可及!宏引起了恐慌!宏
推荐阅读
- Rust编程语言教程介绍
- Rust匹配运算符
- Rust枚举控制流if let运算符
- Rust结构更新语法
- Rust结构方法语法
- 什么是Rust Enum(基本介绍和用法)
- 什么是结构(Rust结构用法)
- Rust什么是切片(详细用法————)
- Rust引用和借入用法详解