我想在发生数组范围之外的访问时捕获错误,但似乎没有引发错误。
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;
}
答案 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');
}