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

本文关键字:异常 | 更新日期: 2023-09-27 18:29:44

我需要捕获"远程服务器返回错误:(401)未授权。"异常以执行另一个操作
问题是,我不知道如何识别它。
现在,我正在使用

catch (Exception ex)
{
}  

但是异常"远程服务器返回错误:(401)未授权。"出现在"InnerException"answers"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"))  

但是真的很糟糕

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

版本1.7上的google api dotnet客户端代码出现问题。如果您正在使用此版本,我鼓励您更新到最新版本。

如果您查看此链接:Google.Apis.Email_Migration_v2你会看到,已经有一张关于这个bug的罚单。

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

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

GoogleApiRequestException类具有属性Code而非HttpStatusCode。所以你可以像下面这样检查Code

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

我指的是这里
https://developers.google.com/drive/web/handle-errors#catching_exceptions_with_client_libraries