在一般情况下和下一个示例中,请求宽恕而不是许可是Java的一种好习惯吗?

示例是:

try {
    Cell value = array2D[rowIndex][columnIndex];
}
catch (ArrayIndexOutOfBoundsException e) {}

如您在上面的代码中看到的,我们从value中获得array2D。如果value超出范围,我们什么也不做。

我问这个问题,是因为在某些情况下(例如,在EAFP中查找给定LBYL的所有邻居),实现Cellarray2D(在跳转之前先看)要容易得多。

最佳答案

您可以通过检查数组的大小来避免引发异常的开销:

if(rowIndex < array2D.length)
{
    if(columnIndex < array2D[rowIndex].length)
    {
        // you are safe here
    }
}

10-07 13:04