Я нахожусь. NET Core, но я думаю, что он работает так же для. NET Framework. Я скопировал ваш код и просто добавил номер строки в качестве комментария в интересные строки:
private void Method1()
{
try
{
throw new Exception("Inside Method1"); // line 42
}
catch (Exception ex)
{
Console.WriteLine("Exception " + ex);
throw; // line 47
}
}
Приведенный выше код выдает следующее:
в Main.Program.Method1 () в C: ... \ Main.cs: строка 42
в обоих Console.WriteLine в Method1 и Main.
Если заменить throw
на throw ex
в блоке перехвата он печатает:
в Main.Program.Method1 () в C: ... \ Main.cs: строка 42
в Console.WriteLine в Method1 и
в Main.Program.Method1 () в C: ... \ Main.cs: строка 47
in Console.WriteLine в Main, потому что исключение переброшено, поэтому номер строки меняется.
Все это говорит о том, что ваш код работает так, как вы ожидаете; поэтому код, который вы выполняете, может быть не тот, который вы компилируете: -)