调用堆栈是否证明代码执行没有中断?

我正试图了解一个非常罕见的间歇性错误的根本原因,这是我们团队中的开发人员无法重现的。 我有它的JS错误堆栈跟踪,看起来像这样:

Cannot call method 'getObject' of undefined at method3 (source.js:2247:551) at method2 (source.js:2248:247) at method1 (source.js:2415:168) at window.Dialog.Class.#ok-button click (source.js:184:59) at HTMLButtonElement.window.GenericController.Class.triggerMethod (source.js:2059:207) at HTMLButtonElement.x.event.dispatch (jquery.js:5:14129) at HTMLButtonElement.v.handle (jquery.js:5:10866)

对我来说,似乎(不是100%肯定的),在单击按钮时执行的代码是以这样的方式编写的,即如果没有来自外部的干预,这个错误本身不可能发生(就像来自外部系统的事件一样,这可能会扰乱程序的状态)。 我的意思是,它本质上看起来与此类似:

1. var x = 5;

2. if (x !== 5) { throw new Error(); }

显然,我们不会在这里引发错误。 另外,这里显然没有事件可以在执行第1和第2行之间进行干涉。

我的问题是:

  • 如果我有一个像上面那样的执行堆栈跟踪,是否可以安全地将堆栈中可见的代码作为单个块执行,并且没有外部事件或任何干预?
  • 如果例如在调用method3之前,method2也调用了method4,method5和method6,我还可以安全地假定这些调用成功执行并且没有办法通过事件中断执行,对吗?
  • 我想这可能取决于浏览器,因为我们使用了一些基于自定义的基于Chromium的浏览器,所以我可能会得到一些结果,例如,Chrome在其他情况下不会发生。

    链接地址: http://www.djcxy.com/p/71697.html

    上一篇: Does a call stack prove that the code execution was not interrupted?

    下一篇: Clear JavaScript call stack