问题在于该异常发生在Connect的路由过程中,该路由在其执行过程中有一个
try/catch块,同时还有一个默认的错误处理程序,该错误处理程序在非生产模式下运行时会打印出堆栈跟踪详细信息。由于异常是在Express内部处理的,因此它永远不会到达域的外部层。
它的区别在于,路由
exception2的处理程序函数
'/'直接由该Connect块执行,与通过Express进行的原始调用位于同一堆栈中。第二个异常发生在
回调中 ,返回了一些I / O操作之后,因此由Node的事件循环I /
O处理程序发起的堆栈执行,因此
try/catchExpress的功能无法捕获该异常并保存应用服务器。实际上,如果您注释掉所有域内容,并
exception2使其跳闸,则会使Node崩溃。
由于仅将未处理的异常路由到域机制,并且由于在其上方的调用堆栈中
exception1有
try/catch可见的异常,因此将处理该异常,而不将其转发到域。



