When a previously caught exception is rethrown, its call stack is replaced by the call stack of the rethrowing point, thus irrevocably losing the original call stack.
Wrapping in another exception (through the InnerException property) preserves the stack.
When a previously caught exception is rethrown, its call stack is replaced by the call stack of the rethrowing point, thus irrevocably losing the original call stack. Wrapping in another exception (through the InnerException property) preserves the stack.