避免出界。尝试捕获与条件检查

时间:2015-01-31 21:18:20

标签: java optimization

我有一个循环迭代,在不同大小的各种数组

中包含这种形式的许多条件
if (a[k]<=x){
     if(al[k+1]==y){
         if(a[k+2]>=x){
         }
     }
}
if (b[k]<=x){
     if(al[k+1]==y){
         if(b[k+2]>=x){
         }
     }
}

这是因为我不想为每个数组创建单独的循环。 显然,如果我根据较大数组的大小进行循环,则另一个数组可以超出范围。 为了避免这种情况,我想在每种情况下添加多项检查,例如

if (b[k]<=x){
     if(sizeAl<k+1 && al[k+1]==y){
         if(sizeB<k+2 && b[k+2]>=x){
         }
     }

或者我可以使用try catch

在性能方面,更好的选择是什么? 欢迎提出任何建议

1 个答案:

答案 0 :(得分:1)

这与性能无关 - 在您的代码中不应出现超出范围的数组索引,如果确实如此,则表明代码已损坏,因此您永远不应该尝试捕获它。而是使用单元测试或其他测试来尽量使您的代码成为防弹。