Предположим, у меня есть следующая ситуация:
9 class Program
10 {
11 public static void WrapperMethod(Action func)
12 {
13 try
14 {
15 //throw new Exception("Case 1");
16 func.Invoke();
17 }
18 catch (Exception ex)
19 {
20 Console.WriteLine(ex.StackTrace);
21 }
22 }
23
24 static void Main(string[] args)
25 {
26 WrapperMethod(() => { throw new Exception("Case 2"); });
27 }
28 }
Я запускаю его и получаю следующий результат:
at TestExceptions.Program.<Main>b__0() in c:\users\administrator\documents\visual studio 2010\Projects\TestExceptions\TestExceptions\Program.cs:line 26
at TestExceptions.Program.WrapperMethod(Action func) in c:\users\administrator\documents\visual studio 2010\Projects\TestExceptions\TestExceptions\Program.cs:line 16
Если я раскомментирую, выдает новое исключение («Случай 1»); вывод такой:
at TestExceptions.Program.WrapperMethod(Action func) in c:\users\administrator\documents\visual studio 2010\Projects\TestExceptions\TestExceptions\Program.cs:line 15
Итак, мой вопрос: почему в первом случае я могу видеть полный путь, включая функцию Main, тогда как во втором случае я не вижу того же самого. Как я могу отобразить более полную информацию, если производственный код аналогичен второму сценарию.