mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 05:33:04 +08:00
@@ -28,7 +28,7 @@ if err1 != nil { … }
|
|||||||
```go
|
```go
|
||||||
... err1 := api.Func1()
|
... err1 := api.Func1()
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
fmt.Println(“err: “ + err.Error())
|
fmt.Println("err: " + err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err2 := api.Func2()
|
err2 := api.Func2()
|
||||||
@@ -41,7 +41,6 @@ if err2 != nil {
|
|||||||
首先,包括在一个初始化的`if`语句中对函数的调用。但即使代码中到处都是以`if`语句的形式通知错误(通过打印错误信息)。通过这种方式,很难分辨什么是正常的程序逻辑,什么是错误检测或错误通知。还需注意的是,大部分代码都是致力于错误的检测。通常解决此问题的好办法是尽可能以闭包的形式封装你的错误检测,例如下面的代码:
|
首先,包括在一个初始化的`if`语句中对函数的调用。但即使代码中到处都是以`if`语句的形式通知错误(通过打印错误信息)。通过这种方式,很难分辨什么是正常的程序逻辑,什么是错误检测或错误通知。还需注意的是,大部分代码都是致力于错误的检测。通常解决此问题的好办法是尽可能以闭包的形式封装你的错误检测,例如下面的代码:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
|
|
||||||
func httpRequestHandler(w http.ResponseWriter, req *http.Request) {
|
func httpRequestHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
err := func () error {
|
err := func () error {
|
||||||
if req.Method != "GET" {
|
if req.Method != "GET" {
|
||||||
@@ -50,8 +49,8 @@ func httpRequestHandler(w http.ResponseWriter, req *http.Request) {
|
|||||||
if input := parseInput(req); input != "command" {
|
if input := parseInput(req); input != "command" {
|
||||||
return errors.New("malformed command")
|
return errors.New("malformed command")
|
||||||
}
|
}
|
||||||
// 可以在此进行其他的错误检测
|
// 可以在此进行其他的错误检测
|
||||||
} ()
|
} ()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
w.WriteHeader(400)
|
w.WriteHeader(400)
|
||||||
|
Reference in New Issue
Block a user