我听说使用try-catch来处理在正常程序流程中可能发生的任何事情,并且应该使用if-else代替.
但是,我们想要将它用于初始化(仅发生一次且仅一次的事件)的情况如何.初始化时,您可能希望这取决于第一个传入数据,如下例所示:
class RunningVectorSum{ double[] running_sum; public double[] add(double vec[]){ try{ for (int i=0; i在这种情况下,从长远来看,使用try-catch与使用时是否应该更快:
public double[] add(double vec[]){ if (running_sum==null) running_sum = new double[vec.length]; for (int i=0; i代替?
编辑:我所知道的事情:
是的,在这个特定的例子中,如果vec具有不同的长度,则可能存在问题
是的,我知道这是一个可怕的罪.
我不知道的事情:
为什么这是一个如此可怕的罪?
总是通过一个尝试(除了一次,分摊到什么都没有)比总是通过一个if(条件)更快
Eran.. 7
使用异常处理来实现业务逻辑是不好的做法.异常处理用于处理特殊情况.
在您的具体示例中,更清楚的是使用异常处理是错误的,因为您在异常处理程序中复制了代码.
顺便说一句,你的方法有另一个潜在的问题.您不能保证在每次调用时
add
都会收到一个长度相同的数组,因此您可能会忽略传递给方法的某些值,或者ArrayIndexOutOfBoundsException
if ifvec
会短于running_sum
.
1> Eran..:使用异常处理来实现业务逻辑是不好的做法.异常处理用于处理特殊情况.
在您的具体示例中,更清楚的是使用异常处理是错误的,因为您在异常处理程序中复制了代码.
顺便说一句,你的方法有另一个潜在的问题.您不能保证在每次调用时
add
都会收到一个长度相同的数组,因此您可能会忽略传递给方法的某些值,或者ArrayIndexOutOfBoundsException
if ifvec
会短于running_sum
.