diff --git a/eBook/16.10.md b/eBook/16.10.md index d4fce15..254b272 100644 --- a/eBook/16.10.md +++ b/eBook/16.10.md @@ -28,7 +28,7 @@ if err1 != nil { … } ```go ... err1 := api.Func1() if err1 != nil { - fmt.Println(“err: “ + err.Error()) + fmt.Println("err: " + err.Error()) return } err2 := api.Func2() @@ -41,7 +41,6 @@ if err2 != nil { 首先,包括在一个初始化的`if`语句中对函数的调用。但即使代码中到处都是以`if`语句的形式通知错误(通过打印错误信息)。通过这种方式,很难分辨什么是正常的程序逻辑,什么是错误检测或错误通知。还需注意的是,大部分代码都是致力于错误的检测。通常解决此问题的好办法是尽可能以闭包的形式封装你的错误检测,例如下面的代码: ```go - func httpRequestHandler(w http.ResponseWriter, req *http.Request) { err := func () error { if req.Method != "GET" { @@ -50,8 +49,8 @@ func httpRequestHandler(w http.ResponseWriter, req *http.Request) { if input := parseInput(req); input != "command" { return errors.New("malformed command") } - // 可以在此进行其他的错误检测 - } () + // 可以在此进行其他的错误检测 + } () if err != nil { w.WriteHeader(400) @@ -74,4 +73,4 @@ func httpRequestHandler(w http.ResponseWriter, req *http.Request) { - [目录](directory.md) - 上一节:[闭包和协程的使用](16.9.md) -- 下一章:[模式](17.0.md) \ No newline at end of file +- 下一章:[模式](17.0.md)