0

我有一个 node.js(v0.8.15,最新稳定)程序崩溃,唯一的输出是:

timers.js:103
        if (!process.listeners('uncaughtException').length) throw e;
                                                                  ^
undefined

考虑到我会使用uncaughtException监听器进行更深入的挖掘,我注册了一个微不足道的回调:

process.on('uncaughtException', function() {
  console.log(arguments)
})

但是,当进程崩溃时,我现在得到的唯一输出是:

{ '0': undefined }

没有 Exception 对象,没有堆栈跟踪,没有消息 - 只是好的 ol' undefined

  • 为什么会发生这种情况?在这种情况下意味着什么undefined
  • 关于如何更好地调试这个的任何建议?当然,我可以开始用随机调试语句乱扔我的代码,但由于我对错误的来源一无所知,这似乎是在要求大打出手。
4

1 回答 1

0

我想通了:我的部分代码throw e在可能没有定义的上下文中调用,如果你抛出一个未定义的,它就不能附加堆栈信息或任何东西。

如果其他人遇到这种情况(或类似情况),请检查您的代码以查看您是否可能抛出非异常的内容。(请参阅StackOverflow 上其他地方的 JavaScript 中出色的自定义异常问题,了解您应该如何抛出一个。)

于 2012-12-06T09:54:12.810 回答