1. throw;直接抛出异常,会保留原始异常点信息;
2. throw ex;会吞掉原始异常点信息(将到现在为止的异常信息清空,认为你catch到的异常已经被处理了,只不过处理过程中又抛出新的异常,从而找不到真正的错误源),重置堆栈中的异常起始点。
3. throw new Exception("异常描述",ex); 包装一个异常,把内部异常Exception也抛出来,这样抛出的异常是最全面详细的异常。经过对异常重新包装,但是会保留原始异常点信息
引用自:http://www.manongjc.com/detail/18-zeozuyvenbpvvpa.html