函数是否有可能在Golang中出错?

时间:2016-11-22 12:51:40

标签: go

我有一组这样的结构:

func LoginUser(w http.ResponseWriter, req *http.Request) {
    // do some check here 
    if err != nil {
        ReturnErrorResponse(w, errors.LoginError)
        return
    }

    // do some check here 
    if err != nil {
        ReturnErrorResponse(w, errors.BannedUserError)
        return
    }

    //success
}

我想知道是否有可能摆脱这些return并以某种方式将它们嵌入到ReturnErrorResponse函数中?

因此,如果发生错误,我会返回带有错误代码的JSONified响应并进行裸露返回。

1 个答案:

答案 0 :(得分:1)

可以通过拨打panic()来支持,例如在ReturnErrorResponse()函数中(在发回错误之后),但它既不惯用也不高效。

使用panic()当然需要在延迟功能中调用recover(),这可以在一个地方完成,例如在"主人"处理程序传递给http.ListenAndServe()

你正在做的是正确的方法。请勿使用panic()