迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

Rust 中 Try-Catch 语句的等价物

作者:迹忆客 最近更新:2023/03/20 浏览次数:

Rust 是一种编程语言,它提供了一种更安全、更可靠的软件开发方式。它旨在防止导致其他语言安全漏洞的常见错误。

Rust 语言不支持异常处理,这意味着它在 Rust 中没有 try-catch 语句。

Rust 中缺少异常处理消除了由于函数抛出异常而导致运行时错误的可能性。这是因为程序将在发生错误的地方停止,而不是继续并可能导致代码库中的其他问题。

本文将讨论 Rust 等价于 try-catch 语句。

等价于 Rust 中的 try-catch 语句

Rust 中有许多等价的 try-catch 语句。但是,在本文中,我们将只讨论几个最接近的等价物。

在 Rust 中使用 ? 操作符

在 Rust 中,我们可以使用 ? 运算符返回或不返回值。

? 运算符是 Rust 的基本特性之一,它可以以多种不同的方式使用。它可以检查一个值是否存在,一个值是否已分配给一个变量,或者一个表达式的计算结果是否为真或假。

? 运算符也可以用作 Rust 的 try-catch 语句的替代方案。这 ? 运算符将闭包作为其参数。

然后可以调用闭包,而不必担心如果在执行期间发生错误会发生什么。

? 如果没有错误,运算符将捕获错误并返回闭包的值,或者如果有错误,它将返回一个错误类型,并描述发生了什么错误。

例子:

fn main() {
    let hello_tasks = || -> Result<(), HelloError> {
        hello_task_1()?;
        hello_task_2()?;
        hello_task_3()?;
        Ok(())
    };
    if let Err(_err) = hello_tasks() {
        println!("There's an error in your code, please correct it");
    }
}
enum HelloError {
    HelloTask1Error,
    HelloTask2Error,
    HelloTask3Error,
}
fn hello_task_1() -> Result<(), HelloError> {
    println!("Task No 1");
    Ok(())
}
fn hello_task_2() -> Result<(), HelloError> {
    println!("Task No 2");
    Err(HelloError::HelloTask2Error)
}
fn hello_task_3() -> Result<(), HelloError> {
    println!("task3");
    Ok(())
}

输出:

Task No 1
Task No 2
There's an error in your code, please correct it

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

用 Rust 读写文件

发布时间:2023/03/21 浏览次数:152 分类:编程语言

本教程演示了在不同版本的 Rust 中读取和写入文件的方式。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便