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

时间:2018-07-02 18:13:15

标签: rust

当已知某些代码段可能引发错误时,我们使用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中使用这样的构造,以确保即使在发生错误之后它也可以继续运行。

1 个答案:

答案 0 :(得分:19)

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

  

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

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

  

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

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

  • 请勿使用Result

    let _ = failing_function();
    

    该函数将被调用,但结果将被忽略。

  • 使用if letmatch忽略Err的{​​{1}}变体:

    Result
  • 解开错误。如果发生错误,此代码会出现紧急情况:

    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!()代替?更为习惯。


另请参阅: