在Javascript中捕获未捕获的Typerrors

时间:2013-12-09 23:10:44

标签: javascript error-handling undefined

获得以下错误

Uncaught Typerror : Cannot read property 'foo' of undefined

违规行是

s2 = targets[j].foo*4;

显然我应该修复问题的根源,但与此同时,我如何正确包装违规行,这样才不会抛出错误并破坏我的应用程序?

2 个答案:

答案 0 :(得分:0)

错误的可能原因是该特定索引的targets[j]为空。

试试这个

s2 = targets[j] && targets[j].foo ? targets[j].foo * 4 : 0;

如果targets[j]为空或未定义,您可以在此处将s2的值设置为默认值(我将其设置为0)。

同样,这只会修复症状,但不会解决问题的根源。

答案 1 :(得分:0)

将代码包装在try catch中可以处理这样的问题。

try {
    s2 = targets[j].foo * 4;
} catch (exception) {
    console.error(exception.stack);
}

而不是

Uncaught ReferenceError: targets is not defined

(因为我甚至没有定义目标)我现在得到了

ReferenceError: targets is not defined
    at snippets:///424_2145:2:10 

但你是对的,你应该找到根本原因。