javascript node.js在尝试捕获中获取行号? [英] javascript node.js getting line number in try catch?

查看:104
本文介绍了javascript node.js在尝试捕获中获取行号?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm using try catch on a node.js script:

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

我得到这样的输出:

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

是否有一种简单的方法这更有用吗?包括行号和函数名等吗?

Is there an easy way to make this more informative? Include line numbers and function names and such?

推荐答案

那些 [Getter / Setter] 成员指示有关错误对象的更多可用信息。您可以使用一个小的辅助函数轻松地转储那些getter / setter的内容(非常琐碎的实现,具体取决于您自己)

Those [Getter/Setter] members indicate further information available on the error object. You can easily dump the contents of those getters/setters using a small helper function (very trivial implementation, further refinement is up to you)

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 可能会覆盖现有功能。

You could also extend the Object.prototype for improved accessability (so you could use err.dumpError()), although extending Object.prototype bears the risk of overwriting existing functionality.

这篇关于javascript node.js在尝试捕获中获取行号?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆