From 0351c39f67787123e19eb749dc34f90b5970a3f4 Mon Sep 17 00:00:00 2001 From: glight2000 <173959153@qq.com> Date: Thu, 31 Dec 2015 15:44:39 +0800 Subject: [PATCH] Update 14.6.md --- eBook/14.6.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/eBook/14.6.md b/eBook/14.6.md index ef80b43..7618cb9 100644 --- a/eBook/14.6.md +++ b/eBook/14.6.md @@ -1,5 +1,23 @@ # 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)