2011-06-10 27 views
4

好吧,我觉得愚蠢问这个问题,原谅我可怜的研究技术,但是......在JavaScript中,是否有内置的错误代码?是否有可能捕获内部错误?可能继续吗?

使用示例

 
    if(obj.attr1.attr2.attr3 == 'constant') return; 
    else if(condition2) ... 

如果obj.attr1是不确定的,JavaScript引擎抛出一个错误。

  1. 抛出的错误是什么?它是普遍定义的吗?

  2. 是可以全局陷阱这个错误?

  3. 如果被困,是否有可能执行下一行condition2

澄清:由于试图获取未定义的属性而引发错误。有没有什么办法可以知道这个是被提出的错误?它是在一些标准的JavaScript错误消息表?

第二,在上游捕获错误,程序是否可以不间断地流动?

回答

2

这是不可能捕获此错误与try/catch块:

try{ 
    if(obj.attr1.attr2.attr3 == 'constant') { 
     alert("test"); 
    } 
} 
catch(e) 
{ 
    alert(e.Message); 
} 

例外为您提供了以下内容:

description "'obj' is undefined" String 
message "'obj' is undefined" String 
name "TypeError" String 
number -2146823279 Number 
0

通常这是优雅的解决不是盲目地假定的东西有没有

if(obj.attr1 && obj.attr1.attr2 && obj.attr1.attr2.attr3 == 'constant') 

除此之外,你可以写在这里捕获异常的try/catch语句,但使用结构化异常处理直接在正常的程序流程皱起了眉头,应尽量避免。

+0

在这方面,请参阅http://stackoverflow.com/questions/6302812/in-javascript-is-there-syntatic-shortcut-checking-existence-of-each-layer-of-emb,它专门解决这个问题。但仍然在一般的技术诀窍之后。 – 2011-06-10 11:05:33

相关问题