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

Raj*_*jan 7 rust

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

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

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

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

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

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

Tim*_*ann 26

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

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

我强烈建议你阅读的错误处理部分锈书:

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

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

try!()如果发生错误,则展开结果并提前返回函数.但是,使用它?代替的更加惯用try!.


也可以看看:

  • 不,因为 rustc _does_ 抱怨未使用的 Result&lt;T, \_&gt; 但它_doesn't_ 抱怨未使用的 Option&lt;T&gt; (3认同)
  • 当有人在这里遇到同样的问题时,我相信“if let Ok(ret) =failing_function()”就是正在寻找的答案。我基本上只是不想做 `match failed_function() { Err(_) =&gt; {}, Ok(ret) =&gt; { ... }` (3认同)