如何忽略从Rust函数返回的错误并继续执行?

问题描述 投票:5回答:1

当知道某些代码可能会抛出错误时,我们会使用try/catch块来忽略这些错误并继续。当错误不重要但我们只想记录它时,这样做:

try{
    int i = 1/0;
} catch( ArithmeticException e){
    System.out.println("Encountered an error but would proceed.");
} 
x = y;

Java中的这种构造将继续执行x = y;

我可以使用match来做这个或任何其他构造吗?

我确实看到了一个try!宏,但是如果Result方法的返回类型出错,它可能会返回。

我想在UT中使用这样的构造,以确保即使在发生错误之后它仍继续运行。

rust
1个回答
22
投票

Rust中的函数可以失败返回Result

Result<T, E>是用于返回和传播错误的类型。它是变量的枚举,Ok(T),表示成功并包含值,Err(E)表示错误并包含错误值。

我强烈建议你阅读Error Handling section中的Rust Book

Rust有许多功能可以处理出现问题的情况

如果您想忽略错误,则有不同的可能性:

  • 不要使用Resultlet _ = failing_function(); 将调用该函数,但结果将被忽略。
  • 使用ErrResult忽略if letmatch变体: if let Ok(ret) = failing_function() { // use the returned value }
  • 打开错误。如果发生错误,此代码会发生以下情况: let ret = failing_function().unwrap(); // or let ret = failing_function().expect("A panic message to be displayed");

如果发生错误,try!()会打开一个结果并提前返回该函数。但是,你应该使用?而不是try!,因为这是probably going to be deprecated


也可以看看:

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.