|
|
|
@ -124,9 +124,9 @@
|
|
|
|
|
|
|
|
|
|
#### 返回 `Result` 而不是调用 `panic!`
|
|
|
|
|
|
|
|
|
|
我们可以选择返回一个 `Result` 值,它在成功时会包含一个 `Config` 的实例,而在错误时会描述问题。我们还将把函数名从 `new` 改为 `build`,因为许多程序员希望 `new` 函数永远不会失败。当 `Config::new` 与 `main` 交流时,可以使用 `Result` 类型来表明这里存在问题。接着修改 `main` 将 `Err` 成员转换为对用户更友好的错误,而不是 `panic!` 调用产生的关于 `thread 'main'` 和 `RUST_BACKTRACE` 的文本。
|
|
|
|
|
我们可以选择返回一个 `Result` 值,它在成功时会包含一个 `Config` 的实例,而在错误时会描述问题。我们还将把函数名从 `new` 改为 `build`,因为许多程序员希望 `new` 函数永远不会失败。当 `Config::build` 与 `main` 交流时,可以使用 `Result` 类型来表明这里存在问题。接着修改 `main` 将 `Err` 成员转换为对用户更友好的错误,而不是 `panic!` 调用产生的关于 `thread 'main'` 和 `RUST_BACKTRACE` 的文本。
|
|
|
|
|
|
|
|
|
|
示例 12-9 展示了为了返回 `Result` 在 `Config::new` 的返回值和函数体中所需的改变。注意这还不能编译,直到下一个示例更新了 `main` 之后。
|
|
|
|
|
示例 12-9 展示了为了返回 `Result` 在 `Config::build` 的返回值和函数体中所需的改变。注意这还不能编译,直到下一个示例更新了 `main` 之后。
|
|
|
|
|
|
|
|
|
|
<span class="filename">文件名:src/main.rs</span>
|
|
|
|
|
|
|
|
|
|