Update ch09-02-recoverable-errors-with-result.md

pull/927/head
萨格尔王 1 week ago committed by GitHub
parent d662b17995
commit 53cd9b95f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -246,7 +246,7 @@ hello.txt should be included in this project: Os { code: 2, kind: NotFound, mess
<span class="caption">示例 9-12: 修改 `main` 返回 `Result<(), E>` 允许对 `Result` 值使用 `?` 运算符</span>
`Box<dyn Error>` 类型是一个**trait 对象***trait object*)第十八章[顾及不同类型值的 trait 对象”][trait-objects] 部分会做介绍。目前可以将 `Box<dyn Error>` 理解为 “任何类型的错误”。在返回 `Box<dyn Error>` 错误类型 `main` 函数中对 `Result` 使用 `?` 是允许的,因为它允许任何 `Err` 值提前返回。即便 `main` 函数体从来只会返回 `std::io::Error` 错误类型,通过指定 `Box<dyn Error>`,这个签名也仍是正确的,甚至当 `main` 函数体中增加更多返回其他错误类型的代码,这个函数签名依然保持正确。
`Box<dyn Error>` 类型是一个**trait 对象***trait object*,这在第十八章[顾及不同类型值的 trait 对象”][trait-objects] 部分会做介绍。目前可以将 `Box<dyn Error>` 理解为 “任何类型的错误”。在返回 `Box<dyn Error>` 错误类型 `main` 函数中对 `Result` 使用 `?`允许的,因为它允许任何 `Err` 值提前返回。即便 `main` 函数体从来只会返回 `std::io::Error` 错误类型,通过指定 `Box<dyn Error>`,这个签名也仍是正确的,甚至当 `main` 函数体中增加更多返回其他错误类型的代码,这个函数签名依然保持正确。
`main` 函数返回 `Result<(), E>`,如果 `main` 返回 `Ok(())` 可执行程序会以 `0` 值退出,而如果 `main` 返回 `Err` 值则会以非零值退出;成功退出的程序会返回整数 `0`,运行错误的程序会返回非 `0` 的整数。Rust 也会从二进制程序中返回与这个惯例相兼容的整数。

Loading…
Cancel
Save