throw
re-throws the caught exception, retaining the stack trace, while throw new Exception
loses some of the details of the caught exception.
You would normally use throw
by itself to log an exception without fully handling it at that point.
BlackWasp has a good article sufficiently titled Throwing Exceptions in C#.