为了账号安全,请及时绑定邮箱和手机立即绑定

如何在错误中访问自定义字段?

如何在错误中访问自定义字段?

Go
BIG阳 2022-07-18 17:02:04
客观的向 dropbox 的 CLI 工具添加一个命令,以获取给定路径(文件或文件夹)的共享链接。更改在这里:github fork。背景dropbox-go-sdk 有一个函数,它接受一个路径,并返回一个新的共享链接,或者返回一个包含现有共享链接的错误。我不知道如何使用错误来提取现有的共享链接。代码在 github 上,并在此处摘录:    dbx := sharing.New(config)    res, err := dbx.CreateSharedLinkWithSettings(arg)    if err != nil {        switch e := err.(type) {        case sharing.CreateSharedLinkWithSettingsAPIError:            fmt.Printf("%v", e.EndpointError)        default:            return err        }    }这将打印以下内容:&{{shared_link_already_exists} <nil> <nil>}found unknown shared link typeError: shared_link_already_exists/...跟踪: CreateSharedLinkWithSettings --> CreateSharedLinkWithSettingsAPIError --> CreateSharedLinkWithSettingsError --> SharedLinkAlreadyExistsMetadata --> IsSharedLinkMetadataIsSharedLinkMetadata包含我正在寻找的 URL。更多信息API 文档指向CreateSharedLinkWithSettings,它应该传回错误中的信息,包括现有的 Url。我很难理解如何处理错误并从中提取 url。dbxcli 有一些代码执行类似的操作,但同样,不确定它是如何工作的,足以将其应用于我正在处理的代码。它是一个结构吗?地图?我不知道这东西叫什么。err.(type)代码中发生了一些奇怪的魔法。我如何访问数据?
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

dbx := sharing.New(config)

    res, err := dbx.CreateSharedLinkWithSettings(arg)

    if err != nil {

        switch e := err.(type) {

        case sharing.CreateSharedLinkWithSettingsAPIError:

            fmt.Printf("%v", e.EndpointError)

            // type cast to the specific error and access the field you want.

            settingsError := err.(sharing.CreateSharedLinkWithSettingsAPIError)

            fmt.Println(settingsError.EndpointError.SharedLinkAlreadyExists.Metadata.Url)

        default:

            return err

        }

    }


查看完整回答
反对 回复 2022-07-18
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

答案是您可以像访问任何其他 golang 数据结构一样访问字段 - 没什么特别的。

我在尝试访问这些字段时遇到的错误是因为这些字段不存在。

代码的问题是依赖问题。代码依赖于旧版本的 go-sdk,我引用了最新版本。

这个问题很好地解释了真正的 golang 程序员如何通过示例处理代码中的错误。我无法在网上找到这个,所以我不会关闭这个问题。


查看完整回答
反对 回复 2022-07-18
  • 2 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信