3 回答
TA贡献1877条经验 获得超1个赞
要做到这一点的方法之一是检查Code的awserr
import "github.com/aws/aws-sdk-go/aws/awserr"
func Lock()(bool, error) {
//Create value v
_, err := db.DynamoDB.UpdateItem(v)
if err != nil {
if ae, ok := err.(awserr.RequestFailure); ok && ae.Code() == "ConditionalCheckFailedException" {
return false, nil
}
return false, err
}
return true, nil
}
TA贡献1859条经验 获得超6个赞
现在有常量来比较错误,而不是像其他答案一样使用硬编码字符串:
result, err := svc.UpdateItem(input)
if err != nil {
if aerr, ok := err.(awserr.Error); ok {
switch aerr.Code() {
case dynamodb.ErrCodeConditionalCheckFailedException:
fmt.Println(dynamodb.ErrCodeConditionalCheckFailedException, aerr.Error())
default:
fmt.Println(aerr.Error())
}
}
}
TA贡献1801条经验 获得超16个赞
原来我想要做的是检查错误以查看它是否包含 string ConditionalCheckFailedException。
func Lock() (bool, error) {
...
_, err := db.DynamoDB.UpdateItem(v)
if err != nil {
if strings.Contains(err.Error(), "ConditionalCheckFailedException") {
return false, nil
}
return false, err
}
return true, nil
}
- 3 回答
- 0 关注
- 233 浏览
添加回答
举报