显示javascript 的异常堆栈( show javascript exception stack)
访问量: 3529
refer to: http://stackoverflow.com/questions/2923858/how-to-print-a-stack-trace-in-node-js and : http://stackoverflow.com/questions/147891/javascript-exception-stack-trace ( 比较有意思的是,这篇文章: http://massalabs.com/dev/2013/10/17/handling-errors-in-nodejs.html 对JS中的错误做了很详细的归类和说明...看晕我了. ^_^ @.@
我有两个文件
test_eval_exception.js :
fs = require('fs');
path = require('path');
file_path = path.join(__dirname, 'throw_error.js')
fs.readFile(file_path, { encoding: 'utf-8'}, function(error, data){
eval(data)
})
throw_error.js:
a = 1; b = 2; c.a //throw error here
运行: ( 其实这个就足够了,可以看到 undefined: 4 , 说明是读取的文件的第四行出错)
$ node test_eval_exception.js
undefined:4
c.a //throw error here
^
ReferenceError: c is not defined
at eval (eval at (/workspace/test_titanium/test_eval_exception.js:7:8), :4:1)
at /workspace/test_titanium/test_eval_exception.js:7:3
at fs.js:271:14
at Object.oncomplete (fs.js:107:15)
我们也可以使用 try .. .catch:
fs.readFile(file_path, { encoding: 'utf-8'}, function(error, data){
try{
eval(data)
}catch(e){
console.error(e.stack)
}
})
结果:
ReferenceError: c is not defined
at eval (eval at (/workspace/happystock_titanium/test_eval_exception.js:9:10), :4:1)
at /workspace/happystock_titanium/test_eval_exception.js:9:5
at fs.js:271:14
at Object.oncomplete (fs.js:107:15)