java - 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;
}
解决方案
你可以做这样的事情......
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");
}
}
推荐阅读
- bash - 如何将多行 bash EOD 命令添加到 gitlab-ci.yml?
- javascript - localStorage 检查所有窗口中的新警报是否打开并设置它
- node.js - 断开连接时的 Node.js 套接字更新服务器端的用户列表
- boost - 使用 clang++ 和 g++ 的 enable_if 的不同行为
- java - 使用 VAULT 配置 Wildfly 8.0.0 以加密密钥库密码时出现无效的密钥库格式异常
- java - 为什么我的 /dist 文件夹在 Java EE 中无法访问
- node.js - 从 Cloud Firestore 中获取价值
- sql-server - 无法识别 sqllite 表中的数据类型
- pm2 - PM2:在单个服务器上部署多个环境?
- java - Gradle 构建错误无法获取未知属性 supportVersion