From 6005ded229f8524226023489887533c758598d0b Mon Sep 17 00:00:00 2001 From: KaiserY Date: Fri, 15 May 2020 09:38:43 +0800 Subject: [PATCH] fix typo in ch09-03 close #397 --- src/ch09-03-to-panic-or-not-to-panic.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ch09-03-to-panic-or-not-to-panic.md b/src/ch09-03-to-panic-or-not-to-panic.md index 447d68a..ffdc207 100644 --- a/src/ch09-03-to-panic-or-not-to-panic.md +++ b/src/ch09-03-to-panic-or-not-to-panic.md @@ -28,12 +28,12 @@ let home: IpAddr = "127.0.0.1".parse().unwrap(); 我们通过解析一个硬编码的字符来创建一个 `IpAddr` 实例。可以看出 `127.0.0.1` 是一个有效的 IP 地址,所以这里使用 `unwrap` 是可以接受的。然而,拥有一个硬编码的有效的字符串也不能改变 `parse` 方法的返回值类型:它仍然是一个 `Result` 值,而编译器仍然就好像还是有可能出现 `Err` 成员那样要求我们处理 `Result`,因为编译器还没有智能到可以识别出这个字符串总是一个有效的 IP 地址。如果 IP 地址字符串来源于用户而不是硬编码进程序中的话,那么就 **确实** 有失败的可能性,这时就绝对需要我们以一种更健壮的方式处理 `Result` 了。 -### 错误处理指导原则 +### 错误处理指导原则sfae 在当有可能会导致有害状态的情况下建议使用 `panic!` —— 在这里,有害状态是指当一些假设、保证、协议或不可变性被打破的状态,例如无效的值、自相矛盾的值或者被传递了不存在的值 —— 外加如下几种情况: * 有害状态并不包含 **预期** 会偶尔发生的错误 -* 之后的代码的运行依赖于处于这种有害状态 +* 在此之后代码的运行依赖于不处于这种有害状态 * 当没有可行的手段来将有害状态信息编码进所使用的类型中的情况 如果别人调用你的代码并传递了一个没有意义的值,最好的情况也许就是 `panic!` 并警告使用你的库的人他的代码中有 bug 以便他能在开发时就修复它。类似的,`panic!` 通常适合调用不能够控制的外部代码时,这时无法修复其返回的无效状态。