Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS,异步异常是不可调度的_Javascript_Node.js_Exception_Event Loop - Fatal编程技术网

Javascript NodeJS,异步异常是不可调度的

Javascript NodeJS,异步异常是不可调度的,javascript,node.js,exception,event-loop,Javascript,Node.js,Exception,Event Loop,我读了一篇信息丰富的文章,内容是关于为什么异步异常在NodeJS中是不可追踪的。它指出,在NodeJS中,反同步异常是不可跟踪的,因为catch块根本不存在于事件循环的堆栈中。例如: try { setImmediate(() => { throw new Error(); }); } catch (e) { // catch error.. doesn't work } 我还在《NodeJS设计模式》一书中读到了以下内容: 在异步回调

我读了一篇信息丰富的文章,内容是关于为什么异步异常在NodeJS中是不可追踪的。它指出,在NodeJS中,反同步异常是不可跟踪的,因为
catch
块根本不存在于事件循环的堆栈中。例如:

 try {
     setImmediate(() => {
        throw new Error();
     });
 } catch (e) {
     // catch error.. doesn't work
 }
我还在《NodeJS设计模式》一书中读到了以下内容:

在异步回调中引发将导致异常跳转到事件循环,并且永远不会传播到下一个回调。在NodeJS中,这是一种不可恢复的状态,并导致应用程序关闭

问题:
从书中我得到的印象是,事件循环有一个单独的堆栈,因此有一个单独的线程,这是真的吗?

节点中有一个单独的线程。您描述的不是特定于节点,而是一般的JS。当
try{…}时,错误不会发生
如果这个解释对您来说更直观的话,将对块进行评估。错误发生在事件循环中,对吗?错误不会发生在事件循环中,而只是传播到事件循环中,因为setImmediate是位于事件循环中的异步函数。正如前面提到的,异常会传播到事件循环中。FWIW,这样的异常可以是handled with.@WillemvanderVeen所有JS代码都在事件循环中运行,因此每个错误都发生在事件循环中。