如何在catch的Exception中获取用户定义对象

时间:2018-10-16 09:37:51

标签: c# exception try-catch stack-trace

我们要获取引起异常的用户定义数据,例如。索引超出范围的异常。

try
{
    int[] list = new int[2];
    list[0] = 1;
    list[1] = 2;
    list[3] = 3;
    Console.WriteLine(list[4]);
}
catch (Exception ex)
{
    /* Expected
     1) Line Number :5
     2) Method Name: SearchArray()
     3) Data: 3 // object specifically
     4) excetion message:ArrayIndexOutOfBound Exception.
    */
    StackTrace st = new StackTrace(ex, true);
    StackFrame frame = st.GetFrame(0);

    var data = ex.StackTrace;
    var tr = ex.HResult;
}

在这种情况下,我们想获取List [3]的值,因为该行负责异常(其中list [3]不会被访问)。

1 个答案:

答案 0 :(得分:0)

由于代码的范围在catch语句之外,因此您无法在其中访问对象。 或者,您可以使用StackTrace例外。它会在“:”列之后为您提供行号。您可以使用它。但是,它将是发生错误的类的行号,而不是确切的函数。