如何处理未定义属性javascript类型错误的未定义属性?

时间:2016-03-02 14:57:29

标签: javascript error-handling typeerror uncaught-typeerror

考虑一个假设的例子:

var r = function (o) { 
    try { o.a.b } 
    catch (e){} 
};

var o={};

r(o.a.b);

console.log('aaaa');

//TypeError: o.a is undefined

有没有办法处理这种错误并显示" aaaa"尽管如此?或者这被称为"未被捕获的类型错误"这似乎总会导致失败?

Ty的链接,但它与上面提到的问题不是真的相同。我有自己的方法来测试嵌套对象,我的问题更多的是如何在javascript中处理执行过程之外的类型错误,而不会打扰这个,即返回false和全部。正如Pointy指出的那样,这真的不可能,这就是我猜的答案。

1 个答案:

答案 0 :(得分:2)

您可以使用:

if(o.a) {
    r(o.a.b);
} else {
    //handle error
}
console.log('aaaa');

检查属性是否存在。如果您还需要检查o.a.b是否存在,只需扩展if:

if(o.a && o.a.b) {
    r(o.a.b);
} else {
    //handle error
}
console.log('aaaa');

这些if正在检查是否存在,但也会标记错误值 - 因此如果o.ao.a.b为false,则检查将失败