 Rust 程序设计语言 简体中文版 1.85.0作期望是一直成功的上下文。如此如果该假设真的被证明是错的,你也有更多的信息来用于调 试。 177/562Rust 程序设计语言 简体中文版 传播错误 当函数的实现中调用了可能会失败的操作时,除了在这个函数中处理错误外,还可以选择让调 用者知道这个错误并决定该如何处理。这被称为传播(propagating)错误,这样能更好的控 制代码调用,因为比起你代码所拥有的上下文,调用者可能拥有更多信息或逻辑来决定应该如 并使程序崩溃、使用一个默认的用户名或者从文件之外的地方寻找用户名。我们 没有足够的信息知晓调用者具体会如何尝试,所以将所有的成功或失败信息向上传播,让他们 选择合适的处理方法。 这种传播错误的模式在 Rust 是如此的常见,以至于 Rust 提供了 ? 问号运算符来来简化这一 过程。 传播错误的快捷方式:? 运算符 示例 9-7 展示了一个 read_username_from_file 的实现,它实现了与示例 相同的工作方式。如果 Result 的值是 Ok,这个表达式将会返回 Ok 中的值而程序将继续执行。 如果值是 Err,Err 将作为整个函数的返回值,就好像使用了 return 关键字一样,这样错误 值就被传播给了调用者。 示例 9-6 中的 match 表达式与 ? 运算符所做的有一点不同:? 运算符所使用的错误值被传递给 了 from 函数,它定义于标准库的 From trait 中,其用来将错误从一种类型转换为另一种类型。0 码力 | 562 页 | 3.23 MB | 25 天前3 Rust 程序设计语言 简体中文版 1.85.0作期望是一直成功的上下文。如此如果该假设真的被证明是错的,你也有更多的信息来用于调 试。 177/562Rust 程序设计语言 简体中文版 传播错误 当函数的实现中调用了可能会失败的操作时,除了在这个函数中处理错误外,还可以选择让调 用者知道这个错误并决定该如何处理。这被称为传播(propagating)错误,这样能更好的控 制代码调用,因为比起你代码所拥有的上下文,调用者可能拥有更多信息或逻辑来决定应该如 并使程序崩溃、使用一个默认的用户名或者从文件之外的地方寻找用户名。我们 没有足够的信息知晓调用者具体会如何尝试,所以将所有的成功或失败信息向上传播,让他们 选择合适的处理方法。 这种传播错误的模式在 Rust 是如此的常见,以至于 Rust 提供了 ? 问号运算符来来简化这一 过程。 传播错误的快捷方式:? 运算符 示例 9-7 展示了一个 read_username_from_file 的实现,它实现了与示例 相同的工作方式。如果 Result 的值是 Ok,这个表达式将会返回 Ok 中的值而程序将继续执行。 如果值是 Err,Err 将作为整个函数的返回值,就好像使用了 return 关键字一样,这样错误 值就被传播给了调用者。 示例 9-6 中的 match 表达式与 ? 运算符所做的有一点不同:? 运算符所使用的错误值被传递给 了 from 函数,它定义于标准库的 From trait 中,其用来将错误从一种类型转换为另一种类型。0 码力 | 562 页 | 3.23 MB | 25 天前3
共 1 条
- 1













