Rust 中 Try-Catch 语句的等价物
Rust 是一种编程语言,它提供了一种更安全、更可靠的软件开发方式。它旨在防止导致其他语言安全漏洞的常见错误。
Rust 语言不支持异常处理,这意味着它在 Rust 中没有 try-catch
语句。
Rust 中缺少异常处理消除了由于函数抛出异常而导致运行时错误的可能性。这是因为程序将在发生错误的地方停止,而不是继续并可能导致代码库中的其他问题。
本文将讨论 Rust 等价于 try-catch
语句。
等价于 Rust 中的 try-catch
语句
Rust 中有许多等价的 try-catch
语句。但是,在本文中,我们将只讨论几个最接近的等价物。
在 Rust 中使用 ?
操作符
在 Rust 中,我们可以使用 ?
运算符返回或不返回值。
这 ?
运算符是 Rust 的基本特性之一,它可以以多种不同的方式使用。它可以检查一个值是否存在,一个值是否已分配给一个变量,或者一个表达式的计算结果是否为真或假。
这 ?
运算符也可以用作 Rust 的 try-catch
语句的替代方案。这 ?
运算符将闭包作为其参数。
然后可以调用闭包,而不必担心如果在执行期间发生错误会发生什么。
这 ?
如果没有错误,运算符将捕获错误并返回闭包的值,或者如果有错误,它将返回一个错误类型,并描述发生了什么错误。
例子:
fn main(){lethello_tasks=||-> Result<(),HelloError>{hello_task_1()?;hello_task_2()?;hello_task_3()?;Ok(())};ifletErr(_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
点击这里查看上述代码的演示。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。