【发布时间】:2014-11-30 09:15:44
【问题描述】:
在一般情况下和下一个示例中请求宽恕而不是许可是 Java 的一种好习惯吗?
例子是:
try {
Cell value = array2D[rowIndex][columnIndex];
}
catch (ArrayIndexOutOfBoundsException e) {}
正如您在上面的代码中看到的,我们从array2D 中得到value。如果value 超出范围,我们什么也不做。
我问这个问题是因为在某些情况下(例如在array2D 中查找给定Cell 的所有邻居),实现EAFP 比实现LBYL(在你跳跃之前查看)要容易得多。
【问题讨论】:
-
我猜你来自 python 背景。我只是 java 的新手,但我发现 java 中存在的作用域在某种程度上阻碍了您充分利用 EAFP 的能力。请参阅上面的示例中的
Cell超出范围,然后才能使用它。