【发布时间】:2017-04-27 15:13:54
【问题描述】:
属性如何处理 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 中的属性如何处理错误?
【问题讨论】:
-
这取决于您是否希望您的应用程序在每种情况下执行不同的操作。如果没有,您可以只处理顶级异常类型,并记录/报告特定错误以供稍后调试/解决。如果您需要您的客户端应用程序在特定情况下表现不同(除了显示不同的错误),那么是的,您必须专门处理这种情况。这个明确记录的可能异常列表与其他 SDK 中提供的枚举有何不同?在这两种情况下,您都有可能出现的错误的有限列表。
-
@ADyson,我希望我的应用程序必须显示来自应用程序资源的用户友好错误消息(取决于用户选择的本地化)。所以我需要仔细处理异常并显示正确的消息(不是调试器消息或异常堆栈)!怎么做?抓住所有!?请问,“明确记录”在哪里?能给个链接吗?
-
那么您不将dropbox.github.io/dropbox-sdk-dotnet/html/… 的链接视为错误文档吗?似乎都列出来了。顺便说一句,你真的尝试过吗?异常可能会为您提供足够友好的错误消息,您可以报告这些错误消息。如果没有,您可以自己准备并将它们映射到 Dropbox 错误。你会得到一些 DropboxException 的孩子,它会包含一条消息。也许他们会与你指出的那些错误属性有对应关系。
-
@ADyson,是的,但那些链接不是“文档”。它只是类列表的简要描述,此外还有其他错误类:共享和用户方法。异常如何给我友好的错误信息?异常消息是否已翻译为我所需的所有语言,我如何通过语言代码接收消息:(“de-DE”、“en-US”、“fr-FR”等)?将我的消息映射到 Dropbox 错误是一个有趣的想法。你能举个粗鲁的例子吗?
标签: c# dropbox dropbox-api