You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在try-catch块中捕获特定403错误的WebException?

如何在WebException捕获块中专门处理403错误

当然可以实现!你当前的代码已经判断了协议错误,但还需要进一步提取HTTP响应的状态码,才能精准定位403(权限禁止)错误。这里是修改后的代码,我会一步步给你解释:

catch (WebException e)
{
    if (e.Status == WebExceptionStatus.ProtocolError)
    {
        // 先确保响应对象不为null,避免空引用异常
        if (e.Response is HttpWebResponse response)
        {
            if (response.StatusCode == HttpStatusCode.Forbidden)
            {
                // 这里专门处理403错误的逻辑
                Logger.Error("遇到403权限禁止错误:" + e.ToString());
                Console.WriteLine("权限不足,请检查你的访问凭证!");
                Console.ReadKey(true);
                return;
            }
            else
            {
                // 处理其他协议错误(比如404、500等)
                Logger.Error($"遇到协议错误,状态码:{(int)response.StatusCode},详情:{e.ToString()}");
                Console.ReadKey(true);
                return;
            }
        }
    }
    // 如果不是协议错误或者无法识别的响应,重新抛出异常
    throw;
}

关键说明:

  • 我们通过e.Response is HttpWebResponse response安全地将响应转换为HTTP响应对象,避免空引用问题
  • 使用HttpStatusCode.Forbidden替代硬编码的403,让代码更具可读性和可维护性
  • 针对403错误单独编写处理逻辑(比如自定义日志提示、用户友好提示),其他协议错误可以统一处理或者再细分
  • 如果异常不属于协议错误范畴,仍然会重新抛出,保证异常链的完整性

内容的提问来源于stack exchange,提问作者user5405648

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:15:17