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

客观的

向 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 --> IsSharedLinkMetadata


IsSharedLinkMetadata包含我正在寻找的 URL。


更多信息

API 文档指向CreateSharedLinkWithSettings,它应该传回错误中的信息,包括现有的 Url。

我很难理解如何处理错误并从中提取 url。


dbxcli 有一些代码执行类似的操作,但同样,不确定它是如何工作的,足以将其应用于我正在处理的代码。它是一个结构吗?地图?我不知道这东西叫什么。err.(type)代码中发生了一些奇怪的魔法。我如何访问数据?


BIG阳
浏览 109回答 2
2回答

largeQ

dbx := sharing.New(config)&nbsp; &nbsp; res, err := dbx.CreateSharedLinkWithSettings(arg)&nbsp; &nbsp; if err != nil {&nbsp; &nbsp; &nbsp; &nbsp; switch e := err.(type) {&nbsp; &nbsp; &nbsp; &nbsp; case sharing.CreateSharedLinkWithSettingsAPIError:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fmt.Printf("%v", e.EndpointError)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // type cast to the specific error and access the field you want.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; settingsError := err.(sharing.CreateSharedLinkWithSettingsAPIError)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fmt.Println(settingsError.EndpointError.SharedLinkAlreadyExists.Metadata.Url)&nbsp; &nbsp; &nbsp; &nbsp; default:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return err&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }

胡说叔叔

答案是您可以像访问任何其他 golang 数据结构一样访问字段 - 没什么特别的。我在尝试访问这些字段时遇到的错误是因为这些字段不存在。代码的问题是依赖问题。代码依赖于旧版本的 go-sdk,我引用了最新版本。这个问题很好地解释了真正的 golang 程序员如何通过示例处理代码中的错误。我无法在网上找到这个,所以我不会关闭这个问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go