【发布时间】:2019-07-04 21:46:13
【问题描述】:
当访问超出数组范围时,我想捕获一个错误,但它似乎没有引发错误。
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;
}
【问题讨论】:
-
在 JavaScript 中访问未定义的属性不会导致运行时错误。这就是语言的工作方式。
-
是的,JS 在访问不存在的属性时不会抛出错误。如果您想处理它,请提前做:
if (i < arr.length) tmp = arr[i] else …。 -
@Bergi 这是一个很好的解决方案
标签: javascript error-handling try-catch