首页 > 解决方案 > Java忽略异常并继续

问题描述

我正在尝试编写一个程序来检查矩阵的相邻条目。问题是条目可能处于边缘,在这种情况下尝试获取下一个条目将引发异常。这就是为什么我添加了一个空的 catch 块来忽略它,但是在 catch 块之后它返回 true。我希望程序检查每个条目并忽略异常。我可以用很多 if 语句来做到这一点,但有更好的方法吗?

private static boolean ShipSunk(char letter, int col) {
    try {
        int row = letter - 'A' + 1;
        if (
            matrix[row + 1][col].equals("O") || 
            matrix[row - 1][col].equals("O") || 
            matrix[row][col + 1].equals("O") || 
            matrix[row][col - 1].equals("O")
        ) {
            return false;
        }
    } catch (ArrayIndexOutOfBoundsException e) {        
    }
    return true;
}

标签: javaexception

解决方案


你可以做这样的事情......

private static boolean ShipSunk(char letter, int col) {
    int row = letter - 'A' + 1;
    if (squareEqualsO(row + 1, col) ||
        squareEqualsO(row - 1, col) ||
        squareEqualsO(row, col + 1) ||
        squareEqualsO(row, col - 1)
    ) {
        return false;
    }
    return true;
}

private static boolean squareEqualsO(int row, int col) {
    if ((row >= matrix.length) || (row < 0)) {
        return false;
    } else if ((col >= matrix[row].length) || (col < 0)) {
        return false;
    } else {
        return matrix[row][col].equals("O");
    }
}

推荐阅读