4

所以我一直在为 Visual Studio ( https://nodejstools.codeplex.com ) 使用 Node.js 工具。

我有这个反复出现的问题,当出现异常时它总是会开始调试。这听起来像是一件好事,但当异常应该被捕获时却不是!

以此为例(这是来自 bson 模块)

try {
    // Load the precompiled win32 binary
    if(process.platform == "win32" && process.arch == "x64") {
      bson = require('./win32/x64/bson');  
    } else if(process.platform == "win32" && process.arch == "ia32") {
      bson = require('./win32/ia32/bson');  
    } else {
      bson = require('../build/Release/bson');  
    }   
} catch(err) {
    console.error("Failed to load c++ bson extension, using pure JS version");
    bson = require('../lib/bson/bson');
}

在这里它将在被捕获使用纯 JS 版本之前进入调试,这是一种预期的行为,但我希望 VS 在之后被捕获时避免开始调试...... (这清楚吗?)

我的临时解决方案是转到 Debug/Exceptions/Node.js Exceptions 并取消选中 Error 下所有内容的“Thrown”...但是当我遇到需要抛出的真正错误时,调试器不会选择它们。

也许这只是工具的限制,因为它很新,但是如果其他人找到了解决方案,那将非常有帮助!

4

1 回答 1

3

NTVS 当前在抛出异常时报告所有异常——我们无法确定它们是否在堆栈中的某个位置被捕获。那些丢失的模块异常几乎总是被捕获。暂时可以将此异常类型添加到 Debug -> Exceptions 中,如果不想每次都按 F5 继续前进,可以禁用中断。在即将发布的 beta 版本中,默认情况下将存在此设置。

http://nodejstools.codeplex.com/discussions/538432

于 2014-03-27T14:11:56.837 回答