throw new xxxException();
抛出异常,根据具体需要,可以抛出特定的异常,如 IndexOutOfException,等
抛出的异常没区别。一个是可以有或者没有ex变量。另一个必需有ex变量
我本来不想回答的,结果一看楼上的回答我流汗了,这样误导了就又葬送一个程序员了……
首先我们要确定你的代码是这样的:
try {
//你的代码
}
catch (Exception ex) {
throw;
//throw ex;
}
来关心一下这里的throw和throw ex有什么区别:
当进入catch快时,这个ex变量肯定是一个Exception类的对象,Exception类有一个叫StackTrace的属性,记录了你的异常是从哪里抛出来,经过了哪些函数,最终到达了这边
如果你使用throw,那么向上抛出这个异常,里面依旧保存了StackTrace,当然这个StackTrace里会再加上一条,说明这个异常经过了你写的这个函数
如果你使用throw ex,那么向上抛出ex这个异常,但里面的StackTrace会清空,上层再catch到异常时,会发现StackTrace里只保留了你写的这个函数开始的路径,那么上层就会认为“这个异常是你的函数引起的,而非你函数调用的其他函数引起的”
一般来说,我们推荐用throw,但世事无绝对,要看具体的场景,至于具体怎么选择,再多积累点经验会更清楚