在调试时在Watch Window中查看Exception.Data

时间:2011-11-24 09:15:01

标签: c# .net visual-studio debugging visual-studio-debugging

在Visual Studio中调试时,如何在Watch Window中轻松查看Exception的Data属性的内容?它是奇怪的类型System.Collections.ListDictionaryInternal。

我发现你可以分别看到键和值:

        try {
            ... do something that throws exception with Data
        }
        catch (Exception ex) {
            throw;
        }
        finally {
        }

在观察窗口中:

ex.Data.Keys.Cast<string>()
ex.Data.Values.Cast<string>()

但是你可以把它看作字典吗?

2 个答案:

答案 0 :(得分:10)

System.Collections.ListDictionaryInternal是一个IDictionary,因此您只需在Watch或QuickWatch窗口中评估以下表达式:

new System.Collections.Hashtable(ex.Data)

编辑:我共同创建了commercial extension for Visual Studio called OzCode,这使得这更容易。有了它,您可以简单地将鼠标悬停在Exception变量上,右键单击它,选择Create Custom Expression,然后输入new System.Collections.Hashtable([obj].Data) // Data。从那一刻开始,无论何时查看异常,您都可以以一种格式良好的方式查看其数据字典,而无需任何手动步骤,如下所示: screenshot

答案 1 :(得分:1)

我认为最好的办法是创建一个函数,使用System.Diagnostics.Debug.Write()将“异常”内容(包括数据元素,如果有的话)输出到“输出”窗口。