我们要获取引起异常的用户定义数据,例如。索引超出范围的异常。
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]不会被访问)。
答案 0 :(得分:0)
由于代码的范围在catch语句之外,因此您无法在其中访问对象。 或者,您可以使用StackTrace例外。它会在“:”列之后为您提供行号。您可以使用它。但是,它将是发生错误的类的行号,而不是确切的函数。