javascript node.js在try catch中获取行号?

javascript node.js getting line number in try catch?

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

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

我得到这样的输出:

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

有没有一种简单的方法可以提供更多信息? 包括行号和功能名称等?


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function dumpError(err) {
  if (typeof err === 'object') {
    if (err.message) {
      console.log('
Message: '
+ err.message)
    }
    if (err.stack) {
      console.log('
Stacktrace:'
)
      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存在覆盖现有功能的风险。