javascript - 为什么我需要避免在循环中使用 try-catch-finally

标签 javascript

每次执行 catch 子句时,try-catch-finally 构造都会在运行时在当前作用域中创建一个新变量,将捕获的异常对象分配给一个变量。

而不是使用...

var object = ['foo', 'bar'], i;  
for (i = 0, len = object.length; i <len; i++) {  
    try {  
        // do something that throws an exception 
    }  
    catch (e) {   
        // handle exception  
    } 
}

为什么要用这个?

var object = ['foo', 'bar'], i;  
try { 
    for (i = 0, len = object.length; i <len; i++) {  
        // do something that throws an exception 
    } 
} 
catch (e) {   
    // handle exception  
} 

是否存在第一种选择优于第二种选择的情况?写代码的时候是跟着感觉走的,但是最近一直在想这个,不知道还能想些什么。哪种解决方案更适合什么?

最佳答案

第一个是“for...try”结构,如果您的对象内容抛出的单个异常没有严重到足以停止整个程序,则它是最好的。如果您可以使用默认值或丢弃错误信息,这就是方法。

如果您的对象内容抛出的任何异常会使您的代码失败,那么“try...for”结构是最好的。

关于javascript - 为什么我需要避免在循环中使用 try-catch-finally,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32844818/

相关文章:

Javascript:-如何将值从表传递到 onClick 处理程序以实现删除功能

javascript - 获取 AngularJS 中指定的 url 的 html 内容

javascript - Node.js 切片内存不足的非常大的缓冲区

javascript - 计算 map 可见部分的边界

JavaScript - 子继承破坏了父继承

javascript - 如何使用jquery在表单提交之前显示通知?

javascript - Bootstrap selectpicker val 不会接受仅字符串的对象

javascript - 在正文中的脚本执行之前加载外部js文件(不使用jQuery)

javascript - 如何显示我的对象可观察数据

javascript - 为深层嵌套值 react setState