如何调试特定Try-Catch处理的异常

时间:2018-01-23 05:09:33

标签: javascript node.js debugging

虽然不是这种情况所独有,但假设您使用的工具通过调用您提供的代码来公开其API。例如Gulp

正如它的工作一样,图书馆会在很早的时候把它的管道包围起来......就像...

try { 
    library.doSomethingWith( input )
} 
catch(err){ 
    throw library.prettify(err) 
}

当“内部”错误发生时(通常在user-land中引起),它可能有所帮助,将一些可能更易读的错误重新抛出到控制台。但是,如果我决定在Chrome DevTools或首选调试界面中逐步执行错误,我就不能这样做。这是因为我关心的特定错误已“折叠”到err并且重新抛出的Error{}具有它自己的,无用的,实时堆栈跟踪。

在某些情况下,这是可以的,因为您可以简单地打破所有例外。但是,当使用足够复杂的库来实现异步行为时,存在一个主要缺点。据我所知,你无法过滤出某些库甚至节点运行时的程序错误,只有死记硬背,{strong>逐字逐句才会throwcatch

通常情况下,当我暂停捕获异常时,我会持续点击

的某些变体
try {
    throw new Error()
} catch {
    //transcend annoyance
}

深深埋藏在核心依赖中。

所有这些都说明了,在消除错误之前,有没有办法拦截一个catch?虽然我认为主要调试器中没有这样的功能,但Node Debugger API中是否有命令或特殊技术可以有效地执行以下操作之一?

  • 在运行时退出try-block之前暂停到catch语句
  • 直接暂停被标记为try {}
  • 的调试程序捕获的异常
  • 在其各自的catch
  • 内重新生成原始错误的调试状态
  • “在所有例外情况下暂停”,但在标记的上下文之外或在列入黑名单的文件中

如果可以通过任何一种方式将错误作为目标,那将是道德和生产力的重大推动。

1 个答案:

答案 0 :(得分:0)

你必须知道这一点,但无论如何,

您可以使用以下选项在发生某些错误时中断执行。

Dispatcher Source code