Как мы можем получить определяемый пользователем объект в Exception в catch - PullRequest
0 голосов
/ 16 октября 2018

Мы хотим получить пользовательские данные, вызвавшие исключение, например.Индекс вне привязанного исключения.

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], поскольку эта строка отвечает за исключение (при котором доступ к списку [3] не будет).

1 Ответ

0 голосов
/ 16 октября 2018

Поскольку область вашего кода находится вне оператора catch, вы не можете получить доступ к объекту там.В качестве альтернативы вы можете использовать StackTrace для исключения.Это даст вам номер строки после столбца ":".Вы можете использовать это.однако это будет номер строки класса, в котором произошла ошибка, а не точная функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...