编程语言
首页 > 编程语言> > 如何处理Dropbox C#SDK中的错误?

如何处理Dropbox C#SDK中的错误?

作者:互联网

属性如何处理Dropbox C#SDK中的错误?

我想使用通用方法来处理来自不同API调用的错误.此方法应在顶级应用程序级别和Serevals API调用中使用.对于大多数云API(例如Microsoft OneDrive和Google Drive API),我可以这样做,因为严格定义了列表(所有错误代码都将枚举),并且只有一个用于处理错误的异常类.
但是在Dropbox C#SDK中,一切都是相反的!没有任何错误代码列表,但有十二个异常类(一个异常模板Dropbox.Api.ApiException< T>和大量错误对象,用于T模板参数).例如,查看文件操作错误类别的数量-http://dropbox.github.io/dropbox-sdk-dotnet/html/N_Dropbox_Api_Files.htm

我勒个去!如何处理所有这些?写巨型catch()块?

更糟糕的是,它们大多数使用相同的错误类型!
例如,类Dropbox.Api.Files.LookupError描述了诸如“未找到”,“格式错误的路径”之类的错误,它是21的一部分!其他错误类别.为了处理简单的“未找到”错误,我必须能够捕获两个打乱!正常吗

那么,属性如何处理Dropbox C#SDK中的错误?

解决方法:

如果要捕获任何任意的Dropbox异常,而不是处理特定的异常,则可以捕获父类型DropboxException,如下所示:

try {
    var account = await this.client.Users.GetCurrentAccountAsync();
    // use account
} catch (DropboxException ex) {
    // inspect and handle ex as desired
}

try {
    var list = await client.Files.ListFolderAsync(string.Empty);
    // use list
} catch (DropboxException ex) {
    // inspect and handle ex as desired
}


try {
    var download = await client.Files.DownloadAsync(path);
    // use download
} catch (DropboxException ex) {
    // inspect and handle ex as desired
}

这是一个更完整的示例,显示了如何捕获特定的异常,以及如何检查通常捕获的异常:

try {
    var list = await client.Files.ListFolderAsync(string.Empty);
    // use list
} catch (ApiException<Dropbox.Api.Files.ListFolderError> ex) {
    // handle ListFolder-specific error
} catch (DropboxException ex) {
    // inspect and handle ex as desired
    if (ex is AuthException) {
        // handle AuthException, which can happen on any call
        if (((AuthException)ex).ErrorResponse.IsInvalidAccessToken) {
            // handle invalid access token case
        }
    } else if (ex is HttpException) {
        // handle HttpException, which can happen on any call
    }
}

标签:dropbox-api,dropbox,c
来源: https://codeday.me/bug/20191111/2019836.html