throw;会保留原始的异常栈信息。这样方便调试很容易找到出错的行号throw e 会虽然异常信息都保留了,但是会修改异常堆栈信息,throw e那个行就会成为出错的行.而不是你try里面调用的代码时候实际的出错行了。