如何在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"))
但是真的很糟糕
版本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