Как я могу получить номер строки, который выдал исключение?

В a catch блок, как я могу получить номер строки, который выдал исключение?

180
задан Liam 15 November 2019 в 04:07
поделиться

4 ответа

Если вам нужен номер строки не только для форматированной трассировки стека, которую вы получаете из Exception.StackTrace, вы можете использовать класс StackTrace:

try
{
    throw new Exception();
}
catch (Exception ex)
{
    // Get stack trace for the exception with source file information
    var st = new StackTrace(ex, true);
    // Get the top stack frame
    var frame = st.GetFrame(0);
    // Get the line number from the stack frame
    var line = frame.GetFileLineNumber();
}

Обратите внимание, что это будет работать, только если для сборки доступен pdb-файл.

258
ответ дан 23 November 2019 в 06:13
поделиться

Вы можете включить файлы символов .PDB , связанные со сборкой, которые содержат информацию метаданных, и когда возникает исключение, оно будет содержать полную информацию в трассировке стека о том, где возникло это исключение. . Он будет содержать номера строк каждого метода в стеке.

18
ответ дан 23 November 2019 в 06:13
поделиться

В файле Global.resx есть событие Application_Error

оно срабатывает всякий раз, когда происходит ошибка, вы можете легко получить любую информацию об ошибке и отправить ее по электронной почте для отслеживания ошибок.

Также я думаю, что все, что вам нужно сделать, это скомпилировать global.resx и добавить его dll (2 dll) в папку bin, и он будет работать!

-3
ответ дан 23 November 2019 в 06:13
поделиться

Простой способ, используйте функцию Exception.ToString () , она вернет строку после описания исключения.

Вы также можете проверить базу данных отладки программы, поскольку она содержит отладочную информацию / журналы обо всем приложении.

66
ответ дан 23 November 2019 в 06:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: