尝试catch的javascript node.js获取行号?
我正在使用try catch一个node.js脚本:
try {} catch (err) {console.log(err)}
我得到这样的输出:
{ stack: [Getter/Setter], arguments: [ 'undefined' ], type: 'called_non_callable', message: [Getter/Setter] }
有没有一个简单的方法来使这个更多的信息? 包括行号和函数名称等?
那些[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()),尽pipe扩展Object.prototype
承担覆盖现有function的风险。