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

Posted

技术标签:

【中文标题】javascript node.js在try catch中获取行号?【英文标题】:javascript node.js getting line number in 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]

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

【问题讨论】:

【参考方案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?

以上是关于javascript node.js在try catch中获取行号?的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 概述

在 Node JS 中为 WebSocket (ws) 使用自签名 CA 证书

使用 node.js 验证带有 CA 证书的 X509 证书

Node.JS - 无法使用try / catch块获得异步抛出

每日灵魂一问-说说你对Node.js 的理解?优缺点?应用场景?

如何在Node,js中处理异常控制?