Я читал, что когда в блоке catch я могу перебросить текущее исключение, используя "throw"; или "выбросить";
От: http://msdn.microsoft.com/en-us/library/ms182363%28VS.80%29.aspx
"Чтобы сохранить исходную информацию трассировки стека за исключением, используйте инструкцию throw без указания исключения".
Но когда я пытаюсь это сделать
try{
try{
try{
throw new Exception("test"); // 13
}catch (Exception ex1){
Console.WriteLine(ex1.ToString());
throw; // 16
}
}catch (Exception ex2){
Console.WriteLine(ex2.ToString()); // expected same stack trace
throw ex2; // 20
}
}catch (Exception ex3){
Console.WriteLine(ex3.ToString());
}
Я получаю три разных стека. Я ожидал, что первый и второй трассы будут одинаковыми. Что я делаю не так? (или понимаете неправильно?)
System.Exception: test at ConsoleApplication1.Program.Main(String [] args) в c:\Program.cs: строка 13 System.Exception: test at ConsoleApplication1.Program.Main(String [] args) в c:\Program. cs: строка 16 System.Exception: test at ConsoleApplication1.Program.Main(String [] args) в c:\Program.cs: строка 20