当前位置:  开发笔记 > 编程语言 > 正文

Java:try-catch vs if-else用于初始化:性能

如何解决《Java:try-catchvsif-else用于初始化:性能》经验,为你挑选了1个好方法。

我听说使用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都会收到一个长度相同的数组,因此您可能会忽略传递给方法的某些值,或者ArrayIndexOutOfBoundsExceptionif if vec会短于running_sum.



1> Eran..:

使用异常处理来实现业务逻辑是不好的做法.异常处理用于处理特殊情况.

在您的具体示例中,更清楚的是使用异常处理是错误的,因为您在异常处理程序中复制了代码.

顺便说一句,你的方法有另一个潜在的问题.您不能保证在每次调用时add都会收到一个长度相同的数组,因此您可能会忽略传递给方法的某些值,或者ArrayIndexOutOfBoundsExceptionif if vec会短于running_sum.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有