我对Java很新,我有一些代码可以在循环中对数组进行操作,并且数组会更改每个循环。当数组太短时,有时代码会抛出IndexOutOfBoundsException。如果没有抛出异常,我有没有办法只执行代码?我知道在Javascript中我可以做类似
的事情var a = arr[index];
if (!a === null) { //do something }
我如何在Java中实现相同的效果?
答案 0 :(得分:7)
您可以在访问某个索引处的数组项之前进行检查
if (arr != null && index >= 0 && index < arr.length) {
// arr[i] exists
}
答案 1 :(得分:0)
如果没有抛出异常,您只能执行代码:
try {
// Code that may throw an exception...
// Only execute this if exception isn't thrown.
} catch (SomeException e) {
// Handle exception.
}
但更好的策略不是首先引起异常。除了上面的丑陋语法之外,异常实际上很慢,因为它们需要构建完整的堆栈跟踪。我的意思是:它们对于许多应用程序来说可能足够快,但是构建那些你将要立即丢弃的堆栈跟踪只是浪费,而且不会更快。
您在这里讨论的异常类型是运行时异常,这是一种未经检查的异常。应该抛出运行时异常以指示编程错误 - 在这种情况下,您没有检查数组索引是否在边界内。
您可以使用单独的条件进行检查:
if (i >= 0) {
if (i < arr.length) {
// Only execute this if index in bounds
}
}
或者,使用&&
,一旦操作数为假,就停止评估:
if (i >= 0 && i < arr.length) {
// ...
}