如何在C#中捕获特定的异常

时间:2013-09-01 08:05:40

标签: c# visual-studio-2010 exception google-drive-api

我需要抓住“远程服务器返回错误:(401)未经授权。”例外以执行其他操作。
问题是,我不确定如何识别它 现在,我正在使用

catch (Exception ex)
{

}  

但异常“远程服务器返回错误:(401)未经授权。”出现在“InnerException”和“Message”中,所以没有状态代码或任何东西。

如何跟踪此特定异常?

如果相关,我正在使用GoogleDrive SDK。

试图用这个:

catch (GoogleApiRequestException e) {
      if (e.HttpStatusCode == HttpStatusCode.Unauthorized) {
        // Credentials have been revoked.
        // TODO: Redirect the user to the authorization URL.
        throw new NotImplementedException();
      }
    }  

但是e.HttpStatusCode为0,所以它没有认出来。

我想我可以使用

if(ex.Message.Contains("401"))  

但这真的很糟糕

2 个答案:

答案 0 :(得分:0)

版本1.7上的google-api-dotnet-client代码存在问题。如果您使用的是此版本,我建议您更新到最新版本。

如果您查看此链接:Google.Apis.Email_Migration_v2 你会看到这个bug上有一张票。

以下是一个教程和代码示例,说明了在纠正API时如何处理此错误: https://developers.google.com/drive/web/handle-errors

如果您仍然遇到同样的问题,我也建议您使用相同的解决方案来检查字符串中的401错误。

答案 1 :(得分:0)

GoogleApiRequestException类的属性Code不是HttpStatusCode。 因此,您可以查看Code,如下所示。

if(e.Code.Equals("401"))  

我在这里提到。
https://developers.google.com/drive/web/handle-errors#catching_exceptions_with_client_libraries