mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-11-13 17:36:12 +08:00
Update 14.6.md
This commit is contained in:
@@ -1,5 +1,23 @@
|
|||||||
# 14.6 协程和recover
|
# 14.6 协程和recover
|
||||||
|
|
||||||
|
一个用到`recover`的程序(参见章节13.3)停掉了服务器内部一个失败的协程而不影响其他协程的工作。
|
||||||
|
```go
|
||||||
|
func server(workChan <-chan *Work) {
|
||||||
|
for work := range workChan {
|
||||||
|
go safelyDo(work) // start the goroutine for that work
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func safelyDo(work *Work) {
|
||||||
|
defer func {
|
||||||
|
if err := recover(); err != nil {
|
||||||
|
log.Printf("Work failed with %s in %v", err, work)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
do(work)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## 链接
|
## 链接
|
||||||
|
|
||||||
- [目录](directory.md)
|
- [目录](directory.md)
|
||||||
|
|||||||
Reference in New Issue
Block a user