The first form creates a new stack trace from the point of throwing;
the second form preserves the stack trace of the original expection. I
find the second form is almost always more useful, unless you're
actually trying to hide the internals of your code.