プロパティはDropboxC#SDKのエラーをどのように処理しますか?
さまざまなAPI呼び出しからのエラーを処理するための一般的な方法を使用したいと思います。このメソッドは、トップアプリレベルおよびサービスAPI呼び出しで使用する必要があります。ほとんどのクラウドAPI(MicrosoftOneDriveやGoogleDrive APIなど)では、厳密に定義されたリスト(列挙型はすべてのエラーコード)とエラー処理用の例外クラスが1つしかないため、これを実行できます。しかし、Dropbox C#SDKでは、すべてが逆になります。エラーコードリストはありませんが、多数の例外クラスがあります(1つの例外テンプレートDropbox.Api.ApiException<T>
とT
テンプレートパラメータ用の大量のエラーオブジェクト)。たとえば、ファイル操作のエラークラスの数を確認してください-http://dropbox.github.io/dropbox-sdk-dotnet/html/N_Dropbox_Api_Files.htm
なんてこったい!それらすべてをどのように処理しますか?巨大なcatch()
ブロックを書く?
さらに悪いことに、それらのほとんどは同じエラータイプを使用します!
たとえばDropbox.Api.Files.LookupError
、「見つかりません」、「不正なパス」などのエラーを説明するクラスは21の一部です。その他のエラークラス。単純な「見つかりません」エラーを処理するには、20個の例外をキャッチできる必要があります。正常ですか?
では、プロパティは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
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加