【问题标题】:javascript node.js getting line number in try catch?javascript node.js在try catch中获取行号?
【发布时间】:2011-08-13 18:08:12
【问题描述】:

我在 node.js 脚本上使用 try catch:

try {} catch (err) {console.log(err)}

我得到这样的输出:

{ 
  stack: [Getter/Setter],
  arguments: [ 'undefined' ],
  type: 'called_non_callable',
  message: [Getter/Setter]
}

有没有一种简单的方法可以使信息更丰富?包括行号和函数名等?

【问题讨论】:

    标签: javascript node.js error-handling try-catch


    【解决方案1】:

    那些[Getter/Setter] 成员表示有关错误对象的更多信息。您可以使用一个小的帮助函数轻松转储这些 getter/setter 的内容(非常简单的实现,进一步细化取决于您)

    function dumpError(err) {
      if (typeof err === 'object') {
        if (err.message) {
          console.log('\nMessage: ' + err.message)
        }
        if (err.stack) {
          console.log('\nStacktrace:')
          console.log('====================')
          console.log(err.stack);
        }
      } else {
        console.log('dumpError :: argument is not an object');
      }
    }
    
    try {
      not_defined.function_call();
    } catch(err) {
      dumpError(err);
    }
    

    您还可以扩展 Object.prototype 以提高可访问性(因此您可以使用 err.dumpError()),尽管扩展 Object.prototype 存在覆盖现有功能的风险。

    【讨论】:

    • 现实生活的改变者,ty
    • 如何获得更深层次的err.stack?
    猜你喜欢
    • 2018-10-17
    • 1970-01-01
    • 2020-03-13
    • 2011-07-12
    • 1970-01-01
    • 2013-07-26
    • 2022-12-21
    • 2017-11-23
    • 2020-06-19
    相关资源
    最近更新 更多