Почему в Exception.StackTrace стек усекается?

Почему верхняя часть стека (в Exception.StackTrace) усекается? Позволять'Вот простой пример:

public void ExternalMethod()
{
  InternalMethod();
}

public void InternalMethod()
{
  try
  {
    throw new Exception();
  }
  catch(Exception ex)
  {
    // ex.StackTrace here doesn't contain ExternalMethod()!
  }
}

Кажется, что этопо дизайну", Но каковы причины такого странного дизайна? Это только усложняет отладку, потому что в сообщениях журнала я могуЯ не понимаю, кто вызвал InternalMethod (), и часто эта информация очень необходима.

Что касается решений (для тех, кто неt знаю), как я понимаю, есть 2 общих решения:

1) Мы можем зарегистрировать статическое свойство Environment.StackTrace, которое содержит весь стек (например, начиная с самого высокого уровня (очередь сообщений) и заканчивая самым глубоким методом, в котором происходит исключение).

2) Мы должны ловить и регистрировать исключения на самых высоких уровнях. Когда нам нужно перехватить исключения на более низких уровнях, чтобы что-то сделать, нам нужно сбросить (с "бросить» заявление в C #) это дальше.

Но вопрос о причинах такого дизайна.

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

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