在javascript中捕获异常

时间:2013-01-10 13:14:15

标签: javascript

  

可能重复:
  How to catch exceptions in javascript?

我正在更改旧的Web应用程序。不幸的是,一些布局更改生成的组件我没有找到任何合理的解决方案,所以我被迫使用'javascript hacks'。我的模板在加载页面的末尾加载javascript文件'layoutfixes.js',它改变了一些生成的组件。生成的组件有各种ID或根本没有它们,所以有时我必须以可怕的方式获取元素,如下所示:

var tdNodes = document.getElementById('tabbedPanel').childNodes[1].childNodes[0]. ... .childNodes[0];

但正如我所说,不是每个页面都有这些组件,所以上面的行抛出错误,该元素为null。我不会在任何地方添加检查页面上是否存在这样的元素。我应该在那个javascript中添加类似“try {} catch(Exception e){}”的内容。但我对javascript不够熟悉。在javascript中是这样的吗?

4 个答案:

答案 0 :(得分:1)

哈克是你在那里做的正确的话。由于你已经进入了hackery的世界,你可以用try / catch添加另一个:

try {
  document.getElementById('tabbedPanel').childNodes[1]
}
catch ( ex ) {
 // do nothing
}

此处有更多信息:http://www.w3schools.com/js/js_errors.asp

答案 1 :(得分:1)

Javascript确实有try/catch实现:

try {
    // add code that can throw exceptions
}
catch (e) {
   // statements to handle any exceptions
}

答案 2 :(得分:1)

Java脚本支持异常处理。您可以编码为:

try {
    foo.bar();
} catch (e) {
    alert(e.name + ": " + e.message);
}

您可以在此处找到更多信息:http://www.w3schools.com/js/js_errors.asp

答案 3 :(得分:1)

您可以使用Try Cache作为建议的其他答案,但我假设您想要遍历特定节点的子节点。在这种情况下,以下代码可以解决问题:

var tdNodes = document.getElementById('tabbedPanel');

for ( var i = 0; i < tdNodes.length; i++ ) {
  //do something with childNodes[i]
}

如果要浏览整个DOM(文档对象模型),可以使用这样的递归调用:

var tdNodes = document.getElementById('tabbedPanel');

function doSomethingWithNode( node ) {
  //process the node and do whatever you like

  //process all the children with a recursive call
  for ( var i = 0; i < tdNodes.length; i++ ) {
    doSomethingWithNode( childNodes[i] );
  }  
}
相关问题