Back

rust - 以? 结尾的调用,跟rails中的try非常类似,为了更方便的处理异常

发布时间: 2020-05-19 04:56:00

参考:https://doc.rust-lang.org/edition-guide/rust-2018/error-handling-and-panics/the-question-mark-operator-for-easier-error-handling.html

我们看到,一些方法调用,会 用?结尾。 例如:  db.execute(xx)?; 

这样的作用是为了能够在维持代码可读性的同时,处理异常。

如果上面的代码正确,则正常返回。

如果不正确,则返回 Error(e)

例如,下面的代码:

let f = File::open("some_file.txt");

let mut f = match f {
    Ok(file) -> file, 
    Error(e) -> return Error(e),
}
与下面是作用相同的:
File::open("some_file.txt")?;

另外,也可以这样做:

method_1()?.method2().method3() 

Back