Разница Environment.StackTrace и Exception.ToString () в C#? - PullRequest
0 голосов
/ 17 июня 2020

Как получить StackTrace, похожий на Exception.ToString()?

Согласно этот ответ должен быть Environment.StackTrace - но я получаю разные результаты для обоих методов.

Ниже приведен упрощенный пример. Я видел случаи, когда Environment.StackTrace имел + 160 строк больше , затем Exception.ToString().

Эти строки, по-видимому, в основном лежат в основе вещей, связанных с задачами и т.д. c, и я Мне они не нужны.

Можно ли получить такое же форматирование, как Exception.ToString()?

namespace ConsoleApp2
{
    class Program
    {
        static async Task Main(string[] args)
        {
            await Task.Delay(0);

            string fromStackTrace   = Environment.StackTrace;
            string fromException;

            try
            {
                throw new Exception("Test");
            }
            catch (Exception e)
            {
                fromException = e.ToString();
            }
        }
    }
}

Результат fromException :

System.Exception: Test
   at ConsoleApp2.Program.Main(String[] args) in C:\Temp\C#\ConsoleApp2\ConsoleApp2\Program.cs:line 17

Результат fromStackTrace :

   at System.Environment.get_StackTrace()
   at ConsoleApp2.Program.Main(String[] args) in C:\Temp\C#\ConsoleApp2\ConsoleApp2\Program.cs:line 12
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
   at ConsoleApp2.Program.Main(String[] args)
   at ConsoleApp2.Program.<Main>(String[] args)
...