在golang错误处理

问题描述 投票:0回答:1

我需要处理错误代码错误并以JSON格式返回错误,如下所示。

{
    "errorCode":400,
    "errors":[
        {
            "errorField":"dispachNumber",
            "errorDescription": "This is not a valid dispatch Number"
        },
        {
            "errorField":"phone",
            "errorDescription": "Phone numbers must be in the XXX-XXX-XXXX format"
        }
    ]
}

{
    "errorCode":500,
    "errors":[
        {
            "errorDescription": "there was an internal server error"
        }
    ]
}

我的问题是如何处理这种方式,这里我只能处理单个错误,但是当我处理多个错误时,它只返回一个错误结构,请参阅代码我是如何做到这一点的。

Errors := ErrorHandle(403, "User Id", "User Id must be of integer type")
Errors = ErrorHandle(403, "Phone Number", "Phone Number type")

ErrorHandle()的作用

func ErrorHandle(ErrorCode int, ErrorFields, ErrorDesc string) []Errors {
    AllErrors := []Errors{}

    if len(AllErrors) > 0 {
        AllErrors = IterateErrors(AllErrors, ErrorCode, ErrorFields, ErrorDesc)
    } else {
        Errorsvalue := Errors{
            ErrorCode: ErrorCode,
        }
        Error := Error{}
        Error.ErrorFields = ErrorFields
        Error.ErrorDescription = ErrorDesc
        Errorsvalue.ErrorDesc = append(Errorsvalue.ErrorDesc, Error)

        AllErrors = append(AllErrors, Errorsvalue)
    }
    return AllErrors
}

提前致谢 !

go
1个回答
2
投票

你总是创建一个新的空AllErrors切片,向它添加一个错误,然后返回它。

你的ErrorHandle应该采用现有的错误列表并附加到它或你应该有一个自定义的type Errors []Error使用如下:

type Errors []Error
func (Errors *e) ErrorHandle(...) {
  ...
  e = append(e, <new error>)
}

Errors myerrors;
myerrors.ErrorHandle(<first error>)
myerrors.ErrorHandle(<second error>)

这只是高级代码,你应该能够填写其余部分。

© www.soinside.com 2019 - 2024. All rights reserved.