...
Code Block |
---|
|
int array[]; // mayMay be null
int i; // mayMay be an invalid index for array
if (array != null & i >= 0 & i < array.length & array[i] >= 0) {
// Use array
} else {
// Handle error
}
|
...
This compliant solution mitigates the problem by using &&
, which causes the evaluation of the conditional expression to terminate immediately if any of the conditions fail, thereby preventing a runtime exception.:
Code Block |
---|
|
int array[]; // mayMay be null
int i; // mayMay be an invalid index for array
if (array != null && i >= 0 && i < array.length && array[i] >= 0) {
// Handle array
} else {
// Handle error
}
|
...
Code Block |
---|
|
int array[]; // mayMay be null
int i; // mayMay be a valid index for array
if (array != null) {
if (i >= 0 && i < array.length) {
if (array[i] != -1) {
// Use array
} else {
// Handle error
}
} else {
// Handle error
}
} else {
// Handle error
}
|
...
This compliant solution mitigates the problem by using &
, which guarantees that both i1
and i2
are incremented regardless of the outcome of the first condition.:
Code Block |
---|
|
while (++i1 < array1.length & // Not &&
++i2 < array2.length &&
array1[i1] == array2[i2])
|
...