Compare commits

..

No commits in common. "1597ed7bcd228dd4c8bf769e72bd32eebb6d19ba" and "561b2d100aefbb1cc48613972a84f2399fb27caa" have entirely different histories.

3 changed files with 5 additions and 5 deletions

View File

@ -71,7 +71,7 @@ s[0] = 'L' // compile error: cannot assign to s[0]
字符串值也可以用字符串面值方式编写,只要将一系列字节序列包含在双引号内即可:
```
"Hello, world"
"Hello, 世界"
```
![](../images/ch3-04.png)

View File

@ -17,7 +17,7 @@ func Parse(input string) (s *Syntax, err error) {
}
```
recover函数帮助Parse从panic中恢复。在deferred函数内部panic value被附加到错误信息中并用err变量接收错误信息返回给调用者。我们也可以通过调用runtime.Stack往错误信息中添加完整的堆栈调用信息。
deferred函数帮助Parse从panic中恢复。在deferred函数内部panic value被附加到错误信息中并用err变量接收错误信息返回给调用者。我们也可以通过调用runtime.Stack往错误信息中添加完整的堆栈调用信息。
不加区分的恢复所有的panic异常不是可取的做法因为在panic之后无法保证包级变量的状态仍然和我们预期一致。比如对数据结构的一次重要更新没有被完整完成、文件或者网络连接没有被关闭、获得的锁没有被释放。此外如果写日志时产生的panic被不加区分的恢复可能会导致漏洞被忽略。