如何捕获JavaScript中超出范围的数组索引?

时间:2019-07-04 21:46:13

标签: javascript error-handling try-catch

我想在发生数组范围之外的访问时捕获错误,但似乎没有引发错误。

let arr = [2,4,5];
let test = arr[3];
console.log(test);

我知道我可以测试未定义并抛出错误

if (arr[3] === undefined) throw new Error();

但是为什么我不能像下面那样尝试抓住它。

let arr = [2,4,5];
try {
      let tmp = arr[3];
    } catch(e) {
      lastIndex = findLastIndex(arr, high / 2, high);
      break;
    }

1 个答案:

答案 0 :(得分:1)

如您所见,访问不存在的数组索引不会引发错误-值“ accessed”将仅为undefined。普通对象的工作方式相同:

const obj = {};
// No error:
const val = obj.foo;

console.log(val);

但是错误通常不应用于控制流程-错误应处理 exception 情况。对于您正在做的事情,我会改用if / else,例如

const arr = [0, 1, 2];
if (4 in arr) {
  const val = arr[4];
  // ...
} else {
  console.log('4 is not in the arr');
}