虽然不是这种情况所独有,但假设您使用的工具通过调用您提供的代码来公开其API。例如Gulp。
正如它的工作一样,图书馆会在很早的时候把它的管道包围起来......就像...
try {
library.doSomethingWith( input )
}
catch(err){
throw library.prettify(err)
}
当“内部”错误发生时(通常在user-land中引起),它可能有所帮助,将一些可能更易读的错误重新抛出到控制台。但是,如果我决定在Chrome DevTools或首选调试界面中逐步执行错误,我就不能这样做。这是因为我关心的特定错误已“折叠”到err
并且重新抛出的Error{}
具有它自己的,无用的,实时堆栈跟踪。
在某些情况下,这是可以的,因为您可以简单地打破所有例外。但是,当使用足够复杂的库来实现异步行为时,存在一个主要缺点。据我所知,你无法过滤出某些库甚至节点运行时的程序错误,只有死记硬背,{strong>逐字逐句才会throw
和catch
。
通常情况下,当我暂停捕获异常时,我会持续点击
的某些变体try {
throw new Error()
} catch {
//transcend annoyance
}
深深埋藏在核心依赖中。
所有这些都说明了,在消除错误之前,有没有办法拦截一个catch
?虽然我认为主要调试器中没有这样的功能,但Node Debugger API中是否有命令或特殊技术可以有效地执行以下操作之一?
try {}
catch
块如果可以通过任何一种方式将错误作为目标,那将是道德和生产力的重大推动。