在其他支持try/catch的语言中,开发人员似乎比JavaScript更多地使用了该特性。这有原因吗?try/catch的JS实现有缺陷吗?
试着看看这篇文章:http://dev.opera.com/articles/view/entificial-javascript/?page=2#trycatch
从上面的链接:
try-catch-finally构造相当独特。与其他构造不同,它在运行时在当前作用域中创建一个新变量。每次执行catch子句时都会发生这种情况,其中捕获的异常对象被分配给变量。这个变量不存在于脚本的其他部分中,即使在相同的作用域中也不存在。它在catch子句的开头创建,然后在它的结尾销毁。
更新
添加一个链接到:https://github.com/petkaantonov/bluebird/wiki/optimization-killers,因为它包含关于V8以及它如何处理这些(和类似的)构造的有用信息。
特别是:
据我所知,在java中,如果没有try-and-catch或其上方的函数减速,则不应编译引发异常的函数。那么,为什么这个代码是合法的,不会被压碎呢? 即使是整数。parseInt()引发:NumberFormatException-如果字符串不包含可解析的整数。
问题内容: 我正在审查一些新代码。该程序仅具有try和finally块。由于不包含catch块,如果try块遇到异常或任何可抛出的异常,它将如何工作?它是否直接进入了finally块? 问题答案: 如果try块中的任何代码都可以引发已检查的异常,则它必须出现在方法签名的throws子句中。如果引发了未经检查的异常,则该异常会冒泡退出方法。 无论是否引发异常,都始终执行finally块。
我有一个try/catch块,我已将其写入JetBrains网络StormIDE,它会给我一个错误。错误如下:“本地捕获的异常的‘抛出’/此检查报告任何JavaScript抛出语句的实例,其异常总是通过包含try语句来捕获。使用抛出语句作为“goto”来更改本地控制流可能会令人困惑。” 如果我将活动从捕获块放入尝试块的 if 块中,那么我将不需要尝试/捕获/最终。那么,除了条件语句(if)之外,你
我有一个测试网站功能的Node.js项目。它利用Webdriver.iov4和摩卡/柴。 我创建了一个函数,用于检查页面上是否存在超时1分钟的元素。如果元素存在,它应该返回。如果没有,它应该返回。 我使用相同的函数来测试页面上是否没有元素。在这种情况下,我希望函数返回。但是,函数不会返回false,而是抛出超时错误,并且既不返回也不返回。这很奇怪,因为我在try-catch子句的catch块中包含
我真的不明白使用嵌套的try-catch块的意义。它们很难阅读,有时也不太直白。例如: 上面的代码可读性更强,我可以理解它的功能——如果发生异常,可以由其中一个catch块处理。但如果我使用嵌套表单: 上面的代码乱七八糟!但它实现了与第一个代码完全相同的功能。还是没有?帮我弄清楚:(
问题内容: 我一直在PHP代码中使用try..catch块,但不确定是否已正确使用它们。 例如,我的一些代码如下所示: 因此,我将多个数据库操作分组在同一try / catch块中,因为如果任何事务中发生任何异常,我将能够处理它。 我这样做是因为我认为它比: 虽然,我不确定我在做什么是好的习惯还是只是捕获异常的一种懒惰方式。 我的假设是,仅当异常需要特殊处理时,它才应具有自己的try / catc