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

为何无法访问Exception的.Error属性?如何获取ODataError的Error.Message?

如何在捕获通用Exception时访问Graph ODataError的Error.Message属性

问题核心是你捕获的是基类Exception,编译器无法识别它的实际类型是ODataError——虽然调试器能通过反射看到实际属性,但即时窗口遵循静态类型检查规则,所以直接访问ex.Error会提示未定义。

以下是几种解决方式:

  • 即时窗口临时访问:在即时窗口里将ex强制转换为ODataError类型后再访问属性:

    ((ODataError)ex).Error.Message
    

    如果异常被嵌套包装(比如在AggregateException内),需要先拆包再转换:

    ((ODataError)((AggregateException)ex).InnerException).Error.Message
    
  • 修改代码优先捕获具体异常:更规范的做法是先捕获ODataError再处理通用异常,这样调试和运行时都能直接访问目标属性:

    catch (ODataError odataEx)
    {
        Log.Write(odataEx.Error.Message);
        // 针对ODataError的专属处理逻辑
    }
    catch (Exception ex)
    {
        Log.Write(ex);
        // 通用异常处理
    }
    
  • 通用catch块内类型判断:如果不想拆分catch块,可在通用捕获逻辑中做类型检查和转换:

    catch (Exception ex)
    {
        if (ex is ODataError odataEx)
        {
            Log.Write(odataEx.Error.Message);
        }
        else
        {
            Log.Write(ex);
        }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:32:22