【问题标题】:How to Debug on Exception handled by a specific Try-Catch如何调试由特定 Try-Catch 处理的异常
【发布时间】:2018-01-23 05:09:32
【问题描述】:

虽然不限于这种情况,但假设您使用了一个工具,该工具通过调用您提供的代码来公开其 API。比如Gulp,比如。

当它完成它的工作时,这个库会很早就将它的管道封装在......

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

当“内部”错误确实发生时(通常在user-land 中引起),它可能会有所帮助,将一些可能更清晰的错误重新抛出到控制台。但是,如果我决定要逐步检查 Chrome DevTools 或首选调试界面中的错误,我不能这样做。这是因为我关心的特定错误已经“崩溃”到 err 中,而重新抛出的 Error{} 有它自己的、无用的、实时的堆栈跟踪。

在某些情况下这是可以的,因为您可以简单地中断所有异常。但是,当使用足够复杂以具有异步行为的库时,存在一个主要缺点。据我所知,您无法过滤掉某些库甚至节点运行时会死记硬背的throwcatch 的程序错误,字面意思是每个滴答声

通常情况下,当我暂停捕获的异常时,我会不断地遇到一些变体

try {
    throw new Error()
} catch {
    //transcend annoyance
}

深埋在核心依赖中。

综上所述,有没有办法在错误被消耗之前拦截catch?虽然我认为这样的功能在主要调试器中不会很容易使用,但 Node Debugger API 中是否有命令或特殊技术可以有效地执行以下操作之一?

  • 在运行时退出 try 块,进入 catch 语句之前暂停
  • 直接暂停被带有调试器标记的try {}捕获的异常
  • 在其各自的catch 块内重新生成原始错误的调试状态
  • “暂停所有异常”,标记上下文之外或列入黑名单的文件除外

如果可以通过这些方式中的任何一种来定位错误,这将大大提高道德和生产力。

【问题讨论】:

  • 虽然我不认为它是这个问题不可或缺的一部分,但当我调试和测试我自己的转换时,它是 Babel,我正面临这个问题

标签: javascript node.js debugging


【解决方案1】:

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

当出现错误时,您可以使用以下选项来中断执行。

【讨论】:

    猜你喜欢
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    相关资源
    最近更新 更多