Свойство StackTrace
Свойство StackTrace у перехваченного
Exception содержит цепочку методов.
Точные номера строк зависят от файла, поэтому
в примерах проверяют фрагмент - например,
Contains("Main") - или что строка не
null сразу после throw.
Синтаксис
string trace = ex.StackTrace;
Пример
Давайте проверить, что в стеке есть Main:
using System;
class Program
{
static void Main()
{
try
{
throw new Exception("abcde");
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace.Contains("Main"));
}
}
}
Результат выполнения кода:
True
Пример
Давайте убедиться, что StackTrace не null в catch:
using System;
class Program
{
static void Main()
{
try
{
Fail();
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace != null);
}
}
static void Fail()
{
throw new Exception("abcde");
}
}
Результат выполнения кода:
True
Пример
Давайте проверить, что стек содержит имя метода Fail:
using System;
class Program
{
static void Main()
{
try
{
Fail();
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace.Contains("Fail"));
}
}
static void Fail()
{
throw new Exception("12345");
}
}
Результат выполнения кода:
True