Сохранение исходных номеров StackTrace / LineNumbers в исключениях .NET

Понимание разницы междубросить экс а такжебросатьпочему оригинальный StackTrace сохранился в этом примере:

    static void Main(string[] args)
    {
        try
        {
            LongFaultyMethod();
        }
        catch (System.Exception ex)
        {
            Console.WriteLine(ex.StackTrace);
        }
    }

    static void LongFaultyMethod()
    {
        try
        {
            int x = 20;
            SomethingThatThrowsException(x);
        }
        catch (Exception)
        {
            throw;
        }
    }

    static void SomethingThatThrowsException(int x)
    {
        int y = x / (x - x);
    }

Но не в этом:

    static void Main(string[] args)
    {
        try
        {
            LongFaultyMethod();
        }
        catch (System.Exception ex)
        {
            Console.WriteLine(ex.StackTrace);
        }
    }

    static void LongFaultyMethod()
    {
        try
        {
            int x = 20;
            int y = x / (x - 20);
        }
        catch (Exception)
        {
            throw;
        }
    }

Второй сценарий производит тот же результат, что ибросить экс было бы?

В обоих случаях ожидается увидеть номер строки, где y инициализируется.

Ответы на вопрос(2)

Ваш ответ на вопрос